1.一般转发(域名加端口)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
upstream domain_test { server 192.168.6.198:80 weight=5; } server { listen 80; server_name client-test.sinoif.com; access_log "pipe:rollback /var/www/logs/nginx/client-test-access.log interval=1d baknum=7 maxsize=1G" main; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://domain_test; } } |
2.带前缀访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#upstream负载均衡 upstream test_dev { server localhost:8081 weight=5; } upstream test_ded { server localhost:8082 weight=5; } server { listen 80; server_name test.com; access_log "pipe:rollback /var/www/logs/nginx/test.com-access.log interval=1d baknum=7 maxsize=1G" main; location ^~/ded/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://test_ded/; #注意后面一定要以/结尾 否则请求一些接口会报错404 或 405 } location ^~/dev/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://test_dev/; #注意后面一定要以/结尾 否则请求一些接口会报错404 或 405 } } #^~/prod/表示匹配前缀是prod的请求,proxy_pass的结尾有/, 则会把/test_dev/*后面的路径直接拼接到后面,即移除替换test_dev 为域名 localhost:8081 |
3.rewrite重写url
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#upstream负载均衡 upstream test_dev { server localhost:8081 weight=5; #注意这里面不能加路径啊,这里用来配置多个ip用来做负载均衡,会被下面proxy_pass引用 } upstream test_ded { server localhost:8082 weight=5; } server { listen 80; server_name test.com; access_log "pipe:rollback /var/www/logs/nginx/test.com-access.log interval=1d baknum=7 maxsize=1G" main; location ^~/dev/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; rewrite ^/dev/(.*)$ /$1 break; proxy_pass http://test_dev; } location ^~/ded/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; rewrite ^/ded/(.*)$ /$1 break; proxy_pass http://test_ded; } } #注意这次的proxy_pass结尾没有/, rewrite重写了url。 |
4.来看看实战应用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
upstream domain_dev { server 192.168.6.202:5555 weight=5; } server { listen 80; server_name test.com; access_log /var/www/logs/nginx/test-access.log; location /{ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://domain_dev/; add_header Cache-Control "no-cache, no-store"; } location ^~/factor/app/{ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://domain_dev/factor/app/; add_header Cache-Control "no-cache, no-store"; } error_page 405 =200 @405; #如果请求页面返回状态为405就使用get请求 location @405 { #更改请求方式为GET proxy_method GET; proxy_pass http://192.168.6.202:60000; } } |

转发请求接口成功
- 本文固定链接: https://www.yoyoask.com/?p=275
- 转载请注明: shooter 于 SHOOTER 发表