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。
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:
4. nginx配置反向代理(二)
这里用docker起动了两个tomcat,端口分别为8080,8081.
在8080容器内webapps文件夹下新建edu目录,并将bb.html页面拷贝进容器内。
在8081容器内webapps文件夹下新建vod目录,并将aa.html页面拷贝进容器内。
下面对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
通过访问192.168.1.117:9001/vod/aa.html
配置文件中的location指令说明
location [ = | ~ | ~* | ^~] uri {
}
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识
5. nginx配置负载均衡
还是上面两个个tomcat容器,8080不需要改动
在8081下创建目录edu,将bb.html拷贝进容器,将bb.html内容改成8081,便于直观的看到结果。
访问结果如下
配置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配置动静分离
在根目录下准备好静态资源文件
启动一个8080的tomcat
配置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
访问http://192.168.1.117/images/
访问http://192.168.1.117/www/a.html
访问
重点是添加 location,
最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功,之需要删除后端 tomcat 服务器上的某个静态文件,查看是否能访问,如果可以访问说明静态资源 nginx 直接返回 了,不走后端 tomcat 服务器