Nginx的简易教程

  • Post author:
  • Post category:其他




Nginx



基操



安装

注意一下需要一些依赖,

zlib

,

gcc-c++

,

pcre

,

openssl

;

依赖装好之后,去官网下一个tar.gz,搞个稳定版的;

解压一下,进入目录,执行

./configure

;

然后执行

make && make install

;

这时候你会发现

/usr/local

下面多了一个

nginx

的文件夹,就是它了;



基本操作

启动:进入nginx下的sbin,执行

./nginx

;

浏览器输入服务器ip地址,若出现nginx的页面就说明启动成功;

重新加载配置文件:

./nginx -s reload

关闭:

./nginx -s stop

;

查看版本号:

./nginx -v

;



配置文件总览

配置文件在nginx目录下的conf里面;

配置文件可分为以下三块:

  • 全局块:从配置文件开始到events块开始,影响nginx整体运行的配置,例如

    worker_processes 1;

    设置了并发处理量为1;
  • events块:影响用户与nginx服务器的网络连接,例如

    worker_connections 1024;

    设置了最大连接数为1024;
  • http块

    • http全局块:http处理的一些全局配置,例如

      keepalive_timeout 65;

      设置了请求完成后还要连接多久;
    • server块

      • server全局块:server全局配置,例如

        listen 80;

        配置了监听80端口;
      • location块:地址定向等功能;



反向代理

对外不暴露应用服务器,而是通过nginx转发给应用服务器来做处理;


案例1:浏览器输入服务器ip,跳转到tomcat主页

虽然也可以通过修改tomcat的server.xml里面的端口为80来做到这一点(我之前就一直这么干),但感觉真的有点low。

这里tomcat的端口是默认的8080;

location / {                         
    root   html;
    # 加上这行即可
    proxy_pass http://127.0.0.1:8080;
    index  index.html index.htm;
}                                    


案例2:代理多个tomcat,根据url的区别转发到不同tomcat

把原先的tomcat复制一份即可,改一下server.xml里面的server的port(监听tomcat关闭的那个,一般原来都是8005)和监听http的port(一般原来都是8080),先把两个tomcat启动起来;

在tomcat8080中创建test1文件夹,里面写个html,在tomcat8081里面做同样的操作,文件夹是test2;

我们希望路径中url中有test1的都去到tomcat8080中,url中有test2的都去到tomcat8081中;

只需在nginx.conf中做如下配置:

location ~ /test1/ {                 
    proxy_pass http://127.0.0.1:8080;
}                                    
                                     
location ~ /test2/ {                 
    proxy_pass http://127.0.0.1:8081;
}                                    

事实上如果我们需要更换nginx监听的端口,我们还可以在创建一个server,我这里图方便就直接放到原有的监听80端口的server里面了。


~

表示后面是区分大小写的正则表达式匹配;


~*

表示后面是不区分大小写的正则表达式匹配;



负载均衡

有时候一个tomcat扛不住压了,就可以搞很多个tomcat帮他分担压力,分担的工作量由nginx根据分配策略分配;

又比如我的一个tomcat挂了,如果我有多台tomcat的话,其他兄弟就能先顶一顶;


案例

例如我有两个tomcat,里面都有静态资源

test3/a.html

,其负载均衡在nginx中的配置如下:

# 在http全局块中配置一个负载均衡
upstream myserver {
    server 202.205.24.212:8080;
    server 202.205.24.212:8081;
}

# 在server块中配置
location / {                                   
    proxy_pass http://myserver;  
}                                

注意这两个tomcat最好一模一样,不要出现一个可以访问某个url,另一个不行的情况,如果有这种情况,还要单独配置一个location(就像前面的例子一样配个有正则的location);


分配策略

  • 默认:默认采用轮询,即按时间先后顺序一次分配;

    upstream myserver {
        server 202.205.24.212:8080;
        server 202.205.24.212:8081;
    }
    
  • 按权重分配:设置weight的值,weight值越大分配的比例越多;

    upstream myserver {
        server 202.205.24.212:8080 weight=1;
        server 202.205.24.212:8081 weight=10;
    }
    
  • ip_hash方式:解决了session问题,一个用户始终访问一个tomcat;

    upstream myserver {
     	ip_hash;
        server 202.205.24.212:8080;
        server 202.205.24.212:8081;
    }
    
  • 按响应时间来分配:谁响应的快就谁来(fair需要单独安装);

    upstream myserver {
        fair;
        server 202.205.24.212:8080;
        server 202.205.24.212:8081;
    }
    



动静分离

静态资源就没必要放tomcat里了,直接用nginx访问就行了;


案例:访问static目录下的html里的html文件

location /html/ {
    root    /static/;
    index index.html;
    autoindex on;
}

这样浏览器就能直接访问了;

autoindex是指是否列出文档目录树,如果是图片的话就会列出来;

index指定初始页面;

root是指你授权访问的文件夹的父目录地址;

/html/是指你授权的目录名称;



版权声明:本文为Paul_1i原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。