Nginx的简易教程

随笔1周前发布 黄太太
27 0 0

Nginx

文章目录

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;
}                                    

123456

案例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;
}                                    

1234567

事实上如果我们需要更换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;  
}                                

12345678910

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

分配策略

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

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

1234

按权重分配:设置weight的值,weight值越大分配的比例越多;

upstream myserver {
    server 202.205.24.212:8080 weight=1;
    server 202.205.24.212:8081 weight=10;
}

1234

ip_hash方式:解决了session问题,一个用户始终访问一个tomcat;

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

12345

按响应时间来分配:谁响应的快就谁来(fair需要单独安装);

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

12345

动静分离

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

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

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

12345

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

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

index指定初始页面;

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

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

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...