目录
-
- 1. Nginx 配置的三种方式
- 2. location配置
- 3. 针对 location 截取代理路径的例子
- 4. 普通代理的例子
- 5. 配置前端的例子
1. Nginx 配置的三种方式
- 第一种直接替换
location
匹配部分 - 第二种
proxy_pass
的目标地址,默认不带/
,表示只代理域名,url
和参数部分不会变(把请求的path
拼接到proxy_pass
目标域名之后作为代理的URL) - 第三种
proxy_pass
的目标地址后增加/
,则表示把path
中location
匹配成功的部分剪切掉之后再拼接到proxy_pass
目标地址
第二种对应标题 4. 普通代理的例子
第三种对应标题 3. 针对 location 截取代理路径的例子
2. location配置
代码语言:javascript复制location [ = | ~ | ~* | ^~ ] uri {
...}
uri前面的方括号中的内容是可选项,解释如下:
"="
:用于标准uri前,要求请求字符串与uri严格匹配,一旦匹配成功则停止
"~"
:用于正则uri前,并且区分大小写
"~*"
:用于正则uri前,但不区分大小写
"^~"
:用于标准uri前,要求Nginx找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配
3. 针对 location 截取代理路径的例子
例如下面的配置演示第三种配置方案,当我们访问 http://44.179.118.54:80/shop/xxx
的时候
访问的时候 Nginx 会把 /shop/
截取掉然后把后面的 path
拼接到 proxy_pass
上
那么我们实际访问的就是: http://44.179.118.54:8007/xxx
这个服务。
第二个访问 http://44.179.118.54:8007/addrdata/xxx
实际就是访问 http://44.179.118.54:8007/xxx
这个服务。
这两种配置方式达到的效果都是一致的。
主要就是 proxy_pass
地址后面加 /
和不加 /
处理逻辑完全不一样。
# shop-service
# 反向代理shop-service服务
location ^~ /shop/ {
proxy_pass http://44.179.118.54:8007/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
# 这里的效果和上面配置的效果一致
location ~ ^/addrdata/(.*) {
proxy_pass http://44.179.118.54:8007/$1$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
4. 普通代理的例子
这样我们访问 http://19.11.11.70:8888/test-api/xxx
实际就是访问 http://19.11.11.71:8088/test-api/xxx
,就是帮 19.11.11.71:8088
端口做了一层代理
server {
listen 8888;
server_name 19.11.11.70;
client_max_body_size 10240m; #修改成自己的想要设置的å44;13Hclient_body_timeout 6000s;
client_header_timeout 600;
client_body_buffer_size 128m;
send_timeout 300s;
keepalive_timeout 300s;
location /test-api {
proxy_pass http://19.11.11.71:8088/test-api;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
}
5. 配置前端的例子
代码语言:javascript复制# 根目录配置前端
# 前端放置目录 /home/java/nginx/cn_abd-app/abd-app
location / {
root /home/java/nginx/cn_abd-app/abd-app/;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
# 非根目录配置前端
# 前端放置目录 /home/java/nginx/cn_bbd-app/bbd-app
location /bbd-app {
root /home/java/nginx/cn_bbd-app/;
index index.html index.htm;
try_files $uri $uri/ /bbd-app/index.html;
}
# 非根目录配置二级路由前端
# 前端放置目录 /home/java/nginx/cn_bbd-app/app/bbd-app
location /app/bbd-app {
root /home/java/nginx/cn_bbd-app/;
index index.html index.htm;
try_files $uri $uri/ /app/bbd-app/index.html;
}
# 非根目录配置hash路由前端
# 前端放置目录 /home/java/nginx/cn_bbd-app/share
location /share {
root /home/java/nginx/cn_bbd-app/;
index index.html index.htm;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180278.html原文链接:https://javaforall.cn