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 웹 페이지 라면 출처 를 식별 하지 않 고 바로 돌아 오 면 됩 니 다.그러나 분포 식 환경 에서 일부 코드 는 같은 서버 에서 제공 되 지 않 을 수 있 습 니 다. 이 는 서버 에서 정 보 를 받 아야 할 때 주 소 를 맞 춰 야 합 니 다.
예 를 들 어 모 회사 의 수 요 는:
코드 가 필요 합 니 다. 어떤 url 을 통 해 들 어 왔 는 지 알 수 있 는 능력 이 필요 합 니 다.그래 야 백 엔 드 주 소 를 맞 출 수 있 습 니 다.
해결 방안
이 문 제 를 납득 하면 해결 방안 은 매우 간단 하 다.
location 부분 에 추가
proxy_set_header Host $host;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.