Nginx概念:反向代理(不关心服务器是谁)服务器
一、Nginx常用命令:
关闭nginx:nginx -s stop/quit
stop是快速关闭,quit正常关闭(等请求走完才关)
重新加载:nginx -s reload
二、nginx配置文件组成:
1、全局块:影响nginx服务器整体运行的配置指令
2、events块:影响nginx服务器与用户的网络连接
3、http块:
a、http全局块:文件引入(include),MIME-TYPE定义,日志自定义,连接超时时间,负载均衡逻辑(upstream)等:
负载均衡常见策略:
1)轮询(默认)
2)权重(weight=n)
3)ip_hash匹配,访客的ip和服务器ip匹配,可以解决session不一致的问题
4)fair(第三方),响应时间越短的分配访问次数越多
b、server块:
location方式:
1)= 精确匹配
2)~ 正则匹配,区分大小写
3)~* 正则匹配,不区分大小写
4)^~ 在前缀匹配中,视作最长长度匹配
匹配规则:
1)先查找 = 精确匹配,找到了就返回该条
2)查找最长前缀匹配^~,匹配到了就返回该条
3)没有精确匹配,和最长前缀匹配,“按顺序”查找正则匹配,~,~*两种,找到任何一条匹配正则就返回
4)上面三者都没,等于用普通前缀长度匹配规则,记录下最长匹配的那条返回
5)/ 匹配全部,等于是兜底的最低级的前缀匹配
三、配置文件例子和注释
include扫码路径下,还有个依赖文件,可以参考
upstream zcy_bidding {
server 127.0.0.1:8040;
}
upstream zcy_bidding-open {
server 127.0.0.1:8049;
}
upstream zcy_project_manage {
server 127.0.0.1:8022;
}
upstream zcy_bidding-entrust {
#server 127.0.0.1:3000;
#server 172.16.101.50:80;
#server 172.16.101.166:80;
server 172.19.195.224:80;
}
upstream zcy_middle {
server middle.test-shanghai.cai-inc.com;
}
upstream zcy_login {
server login.test-shanghai.cai-inc.com;
}
upstream zcy_main {
server test-shanghai.cai-inc.com;
}
server {
listen 80;
listen 443 ssl;
server_name www.test.cai-inc.com, www.test-shanghai.cai-inc.com,bidding.dev-helion.cai-inc.com,bidding.dev-hecate.cai-inc.com,dev-hecate.cai-inc.com,test.cai-inc.com,bidding.test.cai-inc.com,test-shanghai.cai-inc.com,bidding.test-shanghai.cai-inc.com,www.dev-fulltime.cai-inc.com,project-manage.test-shanghai.cai-inc.com;
error_page 404 403 /error;
ssl_certificate /usr/local/etc/nginx/conf.d/server.pem;
ssl_certificate_key /usr/local/etc/nginx/conf.d/privkey.pem;
# access_log /usr/local/etc/nginx/logs/bidding_access.log;
# error_log /usr/local/etc/nginx/logs/bidding_error.log;
location = /favicon.ico {
return 404;
}
location ~ ^/assets/(.*)$ {
#root /Volumes/zcy-bidding-front/public;
#root /Users/yesensen/FrontProjects/zcy-project-manage-front/public;
root /Users/luyun/Documents/code/zcy-bidding-front/public;
expires 30d;
access_log off;
}
location ~ ^/assets_bidding-open/(.*)$ {
#root /Volumes/public;
root /Users/luyun/Documents/code/web-bidding-open-front/public;
expires 30d;
access_log off;
}
## 需要转发给middle的
location = /api/getDistrictByCodeWithoutDate {
proxy_pass http://zcy_middle;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location = /neoericBacklog/api/obtainBacklogHeadInfo {
proxy_pass http://zcy_middle;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/api/zoss/(.*)$ {
proxy_pass http://zcy_middle;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location = /api/getGpcatalog/tree {
proxy_pass http://zcy_middle;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location = /api/zcy/common/getTreeNameByCode {
proxy_pass http://zcy_middle;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location = /api/district/getDistrictTreeWithPrivilegeInJson {
proxy_pass http://zcy_middle;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location = /middle/api/district/getDistrictTree {
proxy_pass http://zcy_middle;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/api/announcement/(.*)$ {
proxy_pass http://zcy_middle;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/announcement/api/(.*)$ {
proxy_pass http://zcy_middle;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /api/user/checkSessionAliveForAllPlatformfromMember{
proxy_pass http://zcy_login/api/user/checkSessionAliveForAllPlatformfromMember;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /api/user/keepSessionAliveForAllPlatformfromMember{
proxy_pass http://zcy_login/api/user/keepSessionAliveForAllPlatformfromMember;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /sessonKickedOutByPlatForm{
proxy_pass http://zcy_login/sessonKickedOutByPlatForm;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/api/common/(.*)$ {
proxy_pass http://zcy_login;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /middle/ {
proxy_pass http://zcy_middle/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /biding/ {
proxy_pass http://zcy_bidding;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ ^/projectContract/(.*)$ {
proxy_pass http://zcy_bidding;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /api/bidding-open/ {
proxy_pass http://zcy_bidding-open;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
add_header Cache-Control 'private, no-store, no-cache, must-revalidate';
}
location /bidding-open/ {
proxy_pass http://zcy_bidding-open;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
add_header Cache-Control 'private, no-store, no-cache, must-revalidate';
}
location /procurement-open/ {
proxy_pass http://zcy_bidding-open;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
add_header Cache-Control 'private, no-store, no-cache, must-revalidate';
}
location /api/projectmanage/ {
proxy_pass http://zcy_project_manage;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
add_header Cache-Control 'private, no-store, no-cache, must-revalidate';
}
location ~ ^/projectmanage/(.*)$ {
proxy_pass http://zcy_project_manage;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
add_header Cache-Control 'private, no-store, no-cache, must-revalidate';
}
location /assets_bidding-open/ {
proxy_pass http://zcy_bidding-open;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
add_header Cache-Control 'private, no-store, no-cache, must-revalidate';
}
location /bidding-entrust/ {
proxy_pass http://zcy_bidding-entrust;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
add_header Cache-Control 'private, no-store, no-cache, must-revalidate';
}
location /bidding-entrust-assets/ {
proxy_pass http://zcy_bidding-entrust;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
add_header Cache-Control 'private, no-store, no-cache, must-revalidate';
}
location / {
proxy_pass http://zcy_bidding;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}