>백엔드 개발 >PHP 튜토리얼 >nginx 도메인 이름 점프~~다시 쓰기, 프록시의 예

nginx 도메인 이름 점프~~다시 쓰기, 프록시의 예

WBOY
WBOY원래의
2016-07-29 09:02:33952검색

며칠 전 포럼 서버를 구축해서 회사 LAN에 넣어두었는데, 포럼에서는 9066 포트를 사용하고 라우터에 포트포워딩을 하고, 도메인 이름은 bbs.xxx로 했습니다. .com 회사 공인 IP 도 가리킵니다. 사용자가 접속 시 포트 번호를 입력하는 것을 원하지 않기 때문에 회사 웹 서버에 뛰어들어 bbs에 접속하고 싶습니다. xxx.com 요청이 그의 서버로 전송됩니다. 나의 첫 번째 생각은 nginx의 재작성을 사용하면 구성이 매우 간단합니다.

서버 {
듣기 80;
server_name bbs.xxx.com;
"^/(.*)$" 다시 쓰기 http://bbs.xxx.com:9066/$1 획기적인; 정상적으로 점프할 수 있지만 사용자 브라우저의 도메인 이름 표시줄에 있는 주소는 항상 다음과 같습니다.
9066
이 포트 번호는 리더를 매우 불만스럽게 만들어서 nginx 문서를 찾아보고 QQ 그룹의 다른 친구들에게 물어보았으나 마땅한 해결책이 없었습니다. 그래서 나는 다음으로 전환했습니다.

proxy_pass

, 이 구성도 매우 간단합니다. 서버 {listen 80;

server_name bbs.xxx.com;

위치 / {
Proxy_pass http://bbs.xxx.com:9066/;
}
}


그런 다음 bbs.xxx.com을 방문하면 그 뒤에 있는 포트 번호가 사라졌습니다. . 회원가입, 로그인, 게시글 모두 정상이었는데 잠시 후 문제가 발생하여 회원가입이 안된다고 하더군요.
1개의 IP는 하루에 5번만 등록이 가능합니다.
". 무슨 일인가요? 확인 후 로그 후 발견

공용 네트워크에서 전송된 모든 요청은 게이트웨이의 IP 주소로 밝혀졌습니다

. 이제 단순히 프록시를 추가한 후에는 nginx가 추가 설정 없이 실제 클라이언트 IP를 결정하지 않는다는 것을 이해합니다. 요청 IP로 직접 사용되므로 위와 같은 상황이 발생하게 됩니다. 분석 후 nginx 위키를 확인하여 몇 가지 항목을 더 추가했습니다. server {listen 80;

server_name bbs.xxx.com;

위치 / {
Proxy_set_header 호스트 $host;
Proxy_set_header X-Real-Ip $remote_addr;
Proxy_set_header X-Forwarded-For $remote_addr;
Proxy_pass http://bbs.xxx.com:9066/;
}
}


변경 후 nginx를 다시 로드하고 로그에서 소스를 찾았습니다. IP는 이미 실제 클라이언트 주소입니다. 재등록, 로그인, 게시 등이 모두 정상입니다. 여러 번 반복해도 문제가 발견되지 않으며 고객 측에서도 모든 것이 정상입니다.
열심히 도움을 주신 Sanmen Banya에게 감사드립니다.

다음은 인터넷에서 찾은 기사입니다. 분석이 매우 자세합니다. http://www.beijus.info/?p=730&cpage=1 이 기사 작성자에게도 감사의 말씀을 전하고 싶습니다. 단단면"

이 글은 '스토리스카이' 블로그에서 가져온 글이니 꼭 출처를 남겨주세요 http://storysky.blog.51cto.com/628458/486338

위 내용은 내용을 포함하여 nginx 도메인 이름 Jump~~rewrite 및 프록시의 예를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.