一、对于不带URI方式,nginx将会保留location中路径部分,比如

    1. location /api1/ {
    2. proxy_pass http://localhost:8080;
    3. }

    访问 http://localhost/api1/xxx 会代理到 http://localhost:8080/api1/xxx

    二、对于带URI方式,nginx将使用诸如alias的替换方式对URL进行替换,并且这种替换只是字面上的替换,比如

    1. location /api2/ {
    2. proxy_pass http://localhost:8080/;
    3. }

    访问 http://localhost/api2/xxx 会代理到 http://localhost:8080/xxx
    http://localhost/api2/(注意最后的/)被替换成了 http://localhost:8080/,然后再加上剩下的xxx

    三、又比如

    1. location /api5/ {
    2. proxy_pass http://localhost:8080/haha;
    3. }

    访问 http://localhost/api5/xxxhttp://localhost/api5/被替换成了http://localhost:8080/haha,请注意这里haha后面没有/,然后再加上剩下的xxx,即http://localhost:8080/haha+xxx=http://localhost:8080/hahaxxx

    四、示例总结

    1. server {
    2. listen 80;
    3. server_name localhost;
    4. location /api1/ {
    5. proxy_pass http://localhost:8080;
    6. }
    7. # http://localhost/api1/xxx -> http://localhost:8080/api1/xxx
    8. location /api2/ {
    9. proxy_pass http://localhost:8080/;
    10. }
    11. # http://localhost/api2/xxx -> http://localhost:8080/xxx
    12. location /api3 {
    13. proxy_pass http://localhost:8080;
    14. }
    15. # http://localhost/api3/xxx -> http://localhost:8080/api3/xxx
    16. location /api4 {
    17. proxy_pass http://localhost:8080/;
    18. }
    19. # http://localhost/api4/xxx -> http://localhost:8080//xxx,请注意这里的双斜线,好好分析一下。
    20. location /api5/ {
    21. proxy_pass http://localhost:8080/haha;
    22. }
    23. # http://localhost/api5/xxx -> http://localhost:8080/hahaxxx,请注意这里的haha和xxx之间没有斜杠,分析一下原因。
    24. location /api6/ {
    25. proxy_pass http://localhost:8080/haha/;
    26. }
    27. # http://localhost/api6/xxx -> http://localhost:8080/haha/xxx
    28. location /api7 {
    29. proxy_pass http://localhost:8080/haha;
    30. }
    31. # http://localhost/api7/xxx -> http://localhost:8080/haha/xxx
    32. location /api8 {
    33. proxy_pass http://localhost:8080/haha/;
    34. }
    35. # http://localhost/api8/xxx -> http://localhost:8080/haha//xxx,请注意这里的双斜杠。
    36. }