Nginx 중 proxy패스 의 평행봉 문제 [전재]

3199 단어
전송:https://www.jianshu.com/p/c751250a5112
Nginx 홈 페이지 proxypass 는 두 가지 유형 으로 나 뉜 다. 하 나 는 IP 와 포트 번호 만 포함 하 는 (포트 뒤의 / 도 없 는데 여기 서 특히 주의해 야 한다). 예 를 들 어 proxy_pass http://localhost:8080 이런 방식 을 URI 가 없 는 방식 이 라 고 한다.다른 하 나 는 포트 번호 뒤에 다른 경로 가 있 는데 하나의 /, 예 를 들 어 proxy_pass http://localhost:8080/ 와 다른 경 로 를 포함한다. 예 를 들 어 proxy_pass http://localhost:8080/abc.
즉, proxy_pass http://localhost:8080proxy_pass http://localhost:8080/ (끝 이 많은 / 는 서로 다른 처리 방식 이 고 proxy_pass http://localhost:8080/proxy_pass http://localhost:8080/abc 는 같은 처리 방식 이다.
  • URI 가 없 는 방식 에 대해 nginx 는 location 의 경로 부분 을 보류 합 니 다. 예 를 들 어
  •         location /api1/ {
               proxy_pass http://localhost:8080;
            }
    

    방문 http://localhost/api1/xxx 시 대리 http://localhost:8080/api1/xxx
  • URI 가 있 는 방식 에 대해 nginx 는 alias 와 같은 교체 방식 으로 URL 을 교체 할 것 입 니 다. 그리고 이런 교 체 는 글자 의 교체 일 뿐 입 니 다. 예 를 들 어
  •       location /api2/ {
               proxy_pass http://localhost:8080/;
            }
    

    방문 http://localhost/api2/xxx 했 을 때 http://localhost/api2/ (마지막 주의 /http://localhost:8080/ 로 바 뀌 었 고 나머지 xxx 를 더 해 http://localhost:8080/xxx 로 바 뀌 었 다.
    또 예 를 들 면:
       location /api5/ {
               proxy_pass http://localhost:8080/haha;
            }
    

    방문 http://localhost/api5/xxx 할 때 http://localhost/api5/ 가 교체 http://localhost:8080/haha 되 었 습 니 다. 여기 haha 뒤에 없 음 / 을 주의 하 세 요. 그리고 나머지 xxx, 즉 http://localhost:8080/haha + xxx = http://localhost:8080/hahaxxx, 이상 하 죠?
    요약:
    server {
       listen       80;
       server_name  localhost;
    
       location /api1/ {
               proxy_pass http://localhost:8080;
            }
       # http://localhost/api1/xxx -> http://localhost:8080/api1/xxx
    
    
       location /api2/ {
               proxy_pass http://localhost:8080/;
            }
       # http://localhost/api2/xxx -> http://localhost:8080/xxx
    
    
       location /api3 {
               proxy_pass http://localhost:8080;
            }
       # http://localhost/api3/xxx -> http://localhost:8080/api3/xxx
    
    
       location /api4 {
               proxy_pass http://localhost:8080/;
            }
       # http://localhost/api4/xxx -> http://localhost:8080//xxx,         ,      。
    
    
       location /api5/ {
               proxy_pass http://localhost:8080/haha;
            }
       # http://localhost/api5/xxx -> http://localhost:8080/hahaxxx,      haha xxx      ,      。
    
       location /api6/ {
               proxy_pass http://localhost:8080/haha/;
            }
       # http://localhost/api6/xxx -> http://localhost:8080/haha/xxx
    
       location /api7 {
               proxy_pass http://localhost:8080/haha;
            }
       # http://localhost/api7/xxx -> http://localhost:8080/haha/xxx
    
       location /api8 {
               proxy_pass http://localhost:8080/haha/;
            }
      # http://localhost/api8/xxx -> http://localhost:8080/haha//xxx,         。
    }

    좋은 웹페이지 즐겨찾기