답변:
대신 리버스 프록시 지원을 사용해보십시오 . 예제 location
섹션은 다음과 같습니다.
location / {
proxy_pass http://localhost:8080;
proxy_redirect http://localhost:8080/ /;
proxy_read_timeout 60s;
# May not need or want to set Host. Should default to the above hostname.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
이 예제는 모든 요청을이 server
블록에 대해 실행중인 두 번째 서버로 전달합니다 localhost:8080
. 이것은를 POST
유지하고 다른 요청 유형도 문제가되면 유지해야합니다.
문제는 외부 리디렉션이 데이터를 다시 보내지 않는다는 것 POST
입니다. 이것은 HTTP 스펙에 기록됩니다 (3xx 섹션을 확인하십시오). 이 작업을 수행하는 모든 클라이언트가 사양을 위반하고 있습니다.
GET 또는 HEAD 이외의 요청에 대한 응답으로 301/302 상태 코드가 수신되면, 사용자 에이전트는 요청이 발행 된 조건을 변경할 수 있으므로 사용자가 확인할 수없는 경우 요청을 자동으로 리디렉션해서는 안됩니다 (MUST NOT). .
나는 대부분의 브라우저가 단순히 리디렉션 된 요청을 요청으로 강제하여 이것을 구현한다고 확신합니다 GET
. 이론적 으로이 사양은 사용자에게 POST
데이터 리디렉션 여부를 묻는 브라우저를 허용 하지만 현재 수행중인 것을 알지 못합니다.
proxy_set_header
값 을 설정하고 싶 습니까? 그렇지 않으면 원격 주소가 프록시 서버의 원격 주소가된다고 생각하지만 일반적으로 원하는 것은 클라이언트의 원격 주소입니다. 맞습니까?
proxy_redirect
은 두 가지 주장을 취합니다. 다음 문서를 참조하십시오 : nginx.org/en/docs/http/…