nginx 설정 호스트 헤드 정보

1999 단어
가끔 은 자신 이 몇 년 동안 nginx 를 사 용 했 기 때문에 nginx 를 잘 알 아야 한다 고 생각 하지만 사실은 그 중의 임 의적 인 매개 변수 에 대한 이해 가 깊 지 않 으 면 후속 적 인 시간 에 고장 이나 문제 로 드 러 날 수 있다.
오늘 rancher 에 앞서 nginx 를 설 치 했 습 니 다. 목적 은 80 포트 를 8080 으로 옮 기 는 것 입 니 다. 이렇게 간단 한 수요 에 문제 가 생 겨 서 는 안 됩 니 다.
장시간 nginx 를 설정 하지 않 았 기 때문에 구체 적 인 설정 매개 변 수 는 쓰 지 않 습 니 다. git 창고 에서 이전 nginx 설정 파일 을 찾 은 후에 베 꼈 습 니 다.
설정 nginx
핵심 부분 코드 는 매우 간단 하 다.
server {
    listen 80;
    server_name qa-rancher.xxx.cn;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }

}


80 을 8080 으로 돌 리 는 것 도 문제 가 있 을 까?
문제 에 봉착 하 다
이것 은 과연 문제 에 부 딪 혔 습 니 다. 이렇게 간단 하 더 라 도 80 포트 를 방문 할 때 rancher 에 로그 인 할 수 없습니다. chrome 개발 자 도구 에서 몇 가지 요청 을 보 았 습 니 다. 브 라 우 저 는 127.0.0.1: 8080 입 니 다. 이것 은 제 가 nginx 에 설정 한 정보 가 아 닙 니까?어떻게 chrome 브 라 우 저 에 반응 할 수 있 습 니까?
나중에 생각해 보 니, 이전에 설정 한 proxypass 앞 에 proxy 가 몇 개 있어 요.set_header 의 정 보 는 무엇 에 쓰 이 는 지 알 지 못 했 습 니 다. 이것 과 관련 이 있 습 니까?
확실히 이것 과 관계 가 있다.
127.0.0.1: 8080 이라는 정 보 는 rancher 가 모 르 고 nginx 가 rancher 에 게 만 전 달 될 수 있 습 니 다. 기본 적 인 상황 에서 nginx 는 방문 한 브 라 우 저 머리 정 보 를 전달 하지 않 고 실제 127.0.0.1: 8080 을 전 달 했 습 니 다. 그래서 rancher 는 127.0.0.1: 8080 을 방문 했다 고 생각 하여 돌아 온 url 을 127.0.0.1: 8080 으로 포장 하 였 습 니 다.
왜 이러 니
여기 서 갑자기 왜 설정 proxy_set_header Host $host; 을 해 야 하 는 지 이해 하 게 되 었 습 니 다. 이 정 보 는 바로 백 엔 드 에 제 가 이 url 로 방 문 했 습 니 다. 그러면 백 엔 드 에서 방문 원 을 식별 할 수 있 습 니 다.
왜 접근 원 을 식별 해 야 합 니까?
만약 에 순수한 html 웹 페이지 라면 출처 를 식별 하지 않 고 바로 돌아 오 면 됩 니 다.그러나 분포 식 환경 에서 일부 코드 는 같은 서버 에서 제공 되 지 않 을 수 있 습 니 다. 이 는 서버 에서 정 보 를 받 아야 할 때 주 소 를 맞 춰 야 합 니 다.
예 를 들 어 모 회사 의 수 요 는:
  • 전단 방문 주 소 는 qa. xxx. com 이 고 대응 하 는 백 엔 드 는 be. qa. xxx. com
  • 입 니 다.
  • 주소 에 접근 할 때 prod. xx. com 이 라면 해당 하 는 백 엔 드 는 be. prod. xxx. com
  • 입 니 다.
    코드 가 필요 합 니 다. 어떤 url 을 통 해 들 어 왔 는 지 알 수 있 는 능력 이 필요 합 니 다.그래 야 백 엔 드 주 소 를 맞 출 수 있 습 니 다.
    해결 방안
    이 문 제 를 납득 하면 해결 방안 은 매우 간단 하 다.
    location 부분 에 추가 proxy_set_header Host $host;

    좋은 웹페이지 즐겨찾기