Nginx入门

一、概述

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


二、安装

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

2、下载依赖包:

  yum install pcre、yum install pcre-devel、yum install zlib、yum 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,输入linux的ip(http://192.168.137.209)即可,因为默认端口80

  注:我安装后,刚开始的时候发现不能访问nginx,经查,80端口不能访问(telnet ipxxx 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中可以配置多个虚拟主机(都在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”(注意开启81端口)

四、Nginx反向代理

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

具体配置如下:

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

例子:我的另一个服务器192.168.137.79启动tomcat

在配置文件(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;
    }
} 
  • 重启nginx:/usr/local/nginx/sbin/nginx -s reload

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


  注意:反向代理后获取客户端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/时轮询访问两个tomcat的nginxTest.html

1、在tomcat的webapps/root目录下添加nginxTest.html文件,里面的内容分别是nginxTest1和nginxTest2

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/,这是就可以看到界面轮询显示nginxTest1和nginxTest2


六、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!!!







展开阅读全文

没有更多推荐了,返回首页