nginx proxy_pass后的url加不加/的区别

摘要

nginx proxy_pass后的url加不加/的区别

nginx配置 proxy_pass

nginx

nginx配置proxy_pass,需要注意转发的路径配置

第一种:proxy_pass后缀不加斜杠

  1. location /abc/ {
  2. proxy_pass http://172.16.1.38:8080;
  3. }

第二种:proxy_pass后缀加斜杠

  1. location /abc/ {
  2. proxy_pass http://172.16.1.38:8081/;
  3. }

上面两种配置,区别只在于proxy_pass转发的路径后是否带 /

针对情况1,如果访问url = http://server/abc/test.jsp,则被nginx代理后,请求路径会便问http://proxy_pass/abc/test.jsp,将test/ 作为根路径,请求test/路径下的资源

针对情况2,如果访问url = http://server/abc/test.jsp,则被nginx代理后,请求路径会变为 http://proxy_pass/test.jsp,直接访问server的根资源

典型实例:

  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. sendfile on;
  9. keepalive_timeout 65;
  10. upstream app{
  11. server 172.16.1.38:8233;
  12. }
  13. upstream online{
  14. server 172.16.1.38:8239;
  15. }
  16. server {
  17. listen 881;
  18. server_name IP;
  19. location /bxg/user/ {
  20. root /root;
  21. index index.html index.htm;
  22. proxy_set_header Host $http_host;
  23. proxy_set_header X-Real-IP $remote_addr;
  24. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  25. client_max_body_size 100m;
  26. proxy_pass http://online;
  27. 解释:当我们访问http://IP/881/bxg/user/下面的资源,nginx会帮我们跳转到online下面对应的IP+端口
  28. 此时返回的url =http://IP/881/bxg/user/1.txt
  29. }
  30. location /bxg/app/ {
  31. proxy_set_header Host $http_host;
  32. proxy_set_header X-Real-IP $remote_addr;
  33. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  34. client_max_body_size 100m;
  35. proxy_pass http://app/;
  36. 解释:当我们访问http://IP/881/bxg/app/下面的资源(此时proxy_pass后面带斜杠),nginx也会帮我们跳转到app下面对应的IP+端口
  37. 此时返回的url =http://IP/881/1.txt
  38. }
  39. #这行属于默认匹配,就是后面什么也不添加,881端口就直接调用这个项目
  40. location / {
  41. root /root;
  42. index index.html index.htm;
  43. proxy_set_header Host $http_host;
  44. proxy_set_header X-Real-IP $remote_addr;
  45. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  46. client_max_body_size 100m;
  47. proxy_pass http://app;
  48. }
  49. }

提示:这种location常用于只有一个公网IP和端口场景,内网IP没有进行映射,但是又需要请求我们的内网服务器的服务,就可以使用location的模式。


历史上的今天:

  1. 2016:  服务器被攻击企业案例(1)
  2. 2016:  通知!(0)
新闻联播老司机

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: