당신이 원하는 것은 가능하다고 생각하지만, 설정 변경은 아파치 끝에서해야합니다. '아파치'는 요청이 직접 포트 1000에 들어오는 처리하는 경우
,이 같은 URI가 표시됩니다
http://127.0.0.1:1000/samp/test1/result?num1=10&num2=30
을 그러나, nginx를 통해 전송되는 경우, 그것은 다음과 같이 더 볼 것이다 :
http://apache/samp/test1/result?num1=10&num2=30
그래서 들어오는 URL을 1000으로 확인한 다음 아파치 측에서 요청을 다시 작성하여 포트 80으로 이동합니다 (기본 값이므로 :80
은 필요하지 않습니다. 포트가 완전히 지정되지 않았습니다.
백엔드가 실제로 아파치 인 경우 다시 쓰기 규칙을 사용하여 다시 쓰기를 처리 할 수 있습니다.
그러나 포트 80에 아직 연결되어 있지 않으면 nginx에 연결하지 않은 것입니다. 그래서 nginx는 이것을 다시 작성할 수 없습니다.
희망적 이군! 여기
내가 시험 방법은 다음과 같습니다
require 'sinatra'
set :bind, "0.0.0.0"
set :port, 1025
get "/*" do
"<p>Hello from \"apache\"! You've just requested:
<code>#{request.url}</code></p>
"
end
다음의 nginx가 thusly 히 구성 :
아파치 측 나는 그것을보고 요청의 전체 URI를 인쇄하는 빠른시나 (루비) 응용 프로그램을 사용
upstream apache {
server 192.168.70.1:1025;
}
server {
server_name localhost;
location/{
proxy_pass http://apache;
}
}
참고 포트 1000은 권한있는 포트이므로 포트 1025를 사용했습니다. 난 당신이 설명하고있는 리디렉션을하고 싶었다면 내가 IPV4 주소와 포트의 정규 표현식과 일치 같은 리디렉션 수
$ curl 'http://192.168.70.1:1025/samp/test1/result?num1=10&num2=30'
<p>Hello from "apache"! You've just requested:
<code>http://192.168.70.1:1025/samp/test1/result?num1=10&num2=30</code></p>
$curl 'http://127.0.0.1:80/samp/test1/result?num1=10&num2=30'
<p>Hello from "apache"! You've just requested:
<code>http://apache/samp/test1/result?num1=10&num2=30</code></p>
:
나는 시험에 요청을 생성하는 컬 사용 :
get "/*" do
if request.url =~ %r|^http://([0-9]{1,3}\.){3}[0-9]{1,3}:1025/|
redirect "http://localhost:80/#{request.fullpath}"
else
"<p>Hello from \"apache\"! Tou've just requested:
<code>#{request.url}</code></p>
"
end
end
는 지금은 리디렉션 (-L)을 따라
curl
을 말해 우리는 그것이 "올바른"경로에 저를 통해 리디렉션을 참조하십시오.
$ curl -L 'http://192.168.70.1:1025/samp/test1/result?num1=10&num2=30'
<p>Hello from "apache"! Tou've just requested:
<code>http://apache/samp/test1/result?num1=10&num2=30</code></p>
내가 사용하는 언어가 아니라는 것을 알고 있습니다 만, 시작하는 데 도움이되기를 바랍니다.
나는 당신이 묻는 것을 조금 혼란스럽게 생각합니다. 당신은 업스트림'아파치'포트 1000에 도달하도록 구성되어 있고 당신은 포트 80에서 듣고 nginx 있습니다. 만약 당신이 포트를 직접 nginx를 무시합니다 - 의미, nginx 그 요청을 다시 작성할 수 없습니다. –
@ Dan Farrell 포트 1000을 친다면, 모든 요청이 80에 의해 제공되기를 바란다. 그래서 nginx 포트로 리다이렉트해야한다. – user3180402