Nginx入门

一、概述

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。很多时候,我们用它做负载均衡。

 

二、安装Nginx

1、下载、解压Nginxtar -zxvf nginx-1.6.2.tar.gz

2、下载依赖包:yum install pcreyum install pcre-develyum install zlibyum install zlib-devel

3、进入解压目录,并且进行configure配置:cd nginx-1.6.2 && ./configure --prefix=/usr/local/nginx

4、编译安装:make && make install

5、启动Nginx/usr/local/nginx/sbin/nginx(关闭用-s stop、重启 -s reload),默认端口80

6、访问nginx,输入linuxiphttp://192.168.137.209)即可,因为默认端口80

注:我安装后,刚开始的时候发现不能访问nginx,经查,80端口不能访问(telnet 192.168.137.209  80),需要开启linux80端口:/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 

 

三、Nginx配置简要说明

1、Nginx配置文件nginx.conf位于/usr/local/nginx/conf目录下,主要配置如下

 

2、配置中server叫做虚拟主机配置

server {
   listen       80;                                   #端口号
   server_name  localhost;                            #虚拟主机名,可配合hosts使用
   #charset koi8-r;                                   #字节编码
   #access_log  logs/host.access.log  main;           #成功日志配置,main为输出格式
   location / {                                       #localtion后面跟的是正则表达式用于配置访问路径
       root   html;                                   #根目录,位于安装目录下
       index  index.html index.htm;                   #访问首页面
   }

   #error_page  404              /404.html;
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   html;
   }
}

可以看到server可以配置多个location,然后根据后面的匹配的路径,就可以实现静态页面的分离,比如我输入http://192.168.186.132/50x.html,访问的界面如下(location后面的等于表示绝对路径)

3、多个虚拟主机配置 

nginx.conf中可以配置多个虚拟主机server(都在http节点里面配置),根据端口号的不同,访问不同的信息,比如在配置中添加一个虚拟主机,端口号为81

server {
    listen       81;
    server_name  service2;
    location  / {
          root html;
          index service2.html;         
    }
} 

其中service2.html是在/usr/local/nginx/html/目录下自己创建的,内容为“hello service2”。

重启Nginx/usr/local/nginx/sbin/nginx -s reload

这时访问http://192.168.137.209:81/,即可看到“hello service2”(注意linux要开启81端口)

 

四、Nginx反向代理

Nginx配置文件里,提供了proxy_pass配置项用于反向代理。该配置项将当前请求反向代理到URL参数指定的服务器上,URL可以是主机名或IP地址加端口的形式

具体配置如下:

server {
    listen       80;
    server_name  localhost;
    location  / {
         proxy_pass  url;  (url是要代理的地址)
    }
} 

例子:我的另一个服务器192.168.137.79启动tomcat,通过代理访问该tomcat

1、修改配置:vim /usr/local/nginx/conf/nginx.conf修改虚拟主机81端口

server {
    listen       81;
    server_name  service2;
    location  / {
        proxy_pass  http://192.168.137.79:8080/;
       # proxy_pass http://www.baidu.com;
    }
} 

2、重启nginx/usr/local/nginx/sbin/nginx -s reload

3、访问:http://192.168.137.209:81 会自动跳转到192.168.137.79tomcat首页

  

注意:反向代理后获取客户端IP地址为nginx服务器地址,如果想要获取真实IP地址,需要配置proxy_set_header X-real-ip $remote_addr

 

五、负载均衡

Nginx通过配置upstream进行负载均衡(该配置与虚拟主机同级),主要配置如下

upstream myUpstream{
    server 192.168.137.79:8080  weight=1 max_fails=3  fail_timeout=30s;
}

server:表示访问的ip或域名

weight:表示访问的权重,默认1

max_fails:表示多少次返回失败后就认为该配置失效

fail_timeout:表示多少秒没返回就认为失败

 

例子,开启两个tomcat,通过配置,实现调用http://192.168.137.209:81/时轮询访问两个tomcatnginxTest.html

1、tomcatwebapps/root目录下添加nginxTest.html文件,里面的内容分别是nginxTest1nginxTest2

2、配置upstream 

upstream myUpstream{
     server 192.168.137.79:8080  weight=1 max_fails=3  fail_timeout=30s;
     server 192.168.137.79:8081  weight=1 max_fails=3  fail_timeout=30s;
}

3、修改虚拟主机proxy_pass

server {
     listen       81;
     server_name  service;
     location  /nginxTest.jsp {
         proxy_pass http://myUpstream;
     }
}

4、重启nginx,访问http://192.168.137.209:81/,这是就可以看到界面轮询显示nginxTest1nginxTest2

 

六、自定义Nginx日志

nginx配置中,可以看到两条被注释了的语句

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

#                 '$status $body_bytes_sent "$http_referer" '

#                 '"$http_user_agent" "$http_x_forwarded_for"';

 

#access_log  logs/access.log  main;

第一条语句是配置日志的格式,第二条语句是表示成功后写日志的位置和格式。此时将第一条语句的注释去掉,在虚拟主机添加第二条语句修改日志名为nginxSuccess.log,即可配置日志

server {
    listen       81;
    server_name  service;
    location  / {
        proxy_pass http://myUpstream;
    }
    access_log  logs/nginxSuccess.log  main;
}

重启服务,可以在nginx目录下的logs文件下看到nginxSuccess.log(如果没能自动生成,需自己新建),打开日志tail -f nginxSuccess.log,每次访问,都会看到多一条日志。

 

Done!

 

posted @ 2018-01-25 15:39  开着坦克的瑞兽  阅读(165)  评论(0编辑  收藏  举报