1. 配置文件的位置

/usr/local/nginx/conf/nginx.conf

2. nginx的配置介绍

配置文件中的内容 包含三部分内容
(1)全局块:配置服务器整体运行的配置指令
比如 worker_processes 1;处理并发数的配置

(2)events 块:影响 Nginx 服务器与用户的网络连接
比如 worker_connections 1024; 支持的最大连接数为 1024

(3)http 块 还包含两部分: http 全局块 server 块

3. nginx配置反向代理(一)

实现本机浏览器访问www.kingstorm.com可以访问到虚拟机中的tomcat。

为了方便测试,先在linux上部署一个tomcat。

记得防火墙开放端口8080。

nginx logformat 配置 nginx配置示例_nginx配置


1、配置本机hosts文件,使www.kingstorm.com指向虚拟机ip

192.168.1.117 www.kingstorm.com

2、nginx配置请求转发(反向代理)
修改配置文件server块中的内容

server {
        listen       80;
        # 指定代理服务器的ip
        server_name  192.168.1.117; 

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

		#配置路由规则
        location / {
            root   html;
            # 代理的地址
            proxy_pass   http://127.0.0.1:8080;
            index  index.html index.htm;
        }

重新加载nginx配置

./nginx -s reload

访问www.kingstorm.com:

nginx logformat 配置 nginx配置示例_nginx logformat 配置_02

4. nginx配置反向代理(二)

这里用docker起动了两个tomcat,端口分别为8080,8081.
在8080容器内webapps文件夹下新建edu目录,并将bb.html页面拷贝进容器内。

nginx logformat 配置 nginx配置示例_nginx logformat 配置_03


在8081容器内webapps文件夹下新建vod目录,并将aa.html页面拷贝进容器内。

nginx logformat 配置 nginx配置示例_nginx配置_04


下面对nginx进行配置

server {
        listen       9001;
        server_name  192.168.1.117;

        location ~ /edu/ {
            proxy_pass   http://127.0.0.1:8080;
        }
        location ~ /vod/ {
            proxy_pass   http://127.0.0.1:8081;
        }
    }

重新加载nginx配置

./nginx -s reload

通过访问192.168.1.117:9001/edu/bb.html

nginx logformat 配置 nginx配置示例_nginx_05


通过访问192.168.1.117:9001/vod/aa.html

nginx logformat 配置 nginx配置示例_nginx配置_06

配置文件中的location指令说明
location [ = | ~ | ~* | ^~] uri {

}

1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识

5. nginx配置负载均衡

还是上面两个个tomcat容器,8080不需要改动

nginx logformat 配置 nginx配置示例_nginx配置_07


在8081下创建目录edu,将bb.html拷贝进容器,将bb.html内容改成8081,便于直观的看到结果。

访问结果如下

nginx logformat 配置 nginx配置示例_nginx_08


配置nginx

http {
	    upstream myserver {
    	server 192.168.1.117:8080
    	server 192.168.1.117:8081
    }
    server {
        listen       80;
        server_name  192.168.1.117;
        location / {
            root   html;
            proxy_pass   http://myserver;
            index  index.html index.htm;
        }
    }
}

重新加载nginx配置

./nginx -s reload

访问http://192.168.1.117/edu/bb.html
可以看到请求通过轮训的方式被转发到8080和8081上了。

nginx配置负载均衡的集中策略

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2、weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:

upstream server_pool {    
	server 192.168.5.21 weight=10;     
	server 192.168.5.22 weight=10;     
}

3、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:

upstream server_pool { 
  ip_hash;     server 192.168.5.21:80;   
  server 192.168.5.22:80;    
}

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream server_pool {    
	server 192.168.5.21:80;     
	server 192.168.5.22:80;     
	fair;    
 }

6. nginx配置动静分离

在根目录下准备好静态资源文件

nginx logformat 配置 nginx配置示例_nginx配置_09


启动一个8080的tomcat

nginx logformat 配置 nginx配置示例_nginx配置_10


配置nginx

server {
        listen       80;
        server_name  192.168.1.117;
        
        location / {
            proxy_pass   http://127.0.0.1:8080;
        }
        location /www/ {
            root   /data/;
            index  index.html index.htm;
        }
        location /images/ {
            root   /data/;
            # 表示列出当前文件夹下的内容
            autoindex on;
        }
    }

重新加载nginx配置

./nginx -s reload

访问http://192.168.1.117

nginx logformat 配置 nginx配置示例_nginx logformat 配置_11


访问http://192.168.1.117/images/

nginx logformat 配置 nginx配置示例_nginx_12


访问http://192.168.1.117/www/a.html

nginx logformat 配置 nginx配置示例_nginx配置_13


访问

重点是添加 location,

最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功,之需要删除后端 tomcat 服务器上的某个静态文件,查看是否能访问,如果可以访问说明静态资源 nginx 直接返回 了,不走后端 tomcat 服务器