내 프록시 서버는 ip A에서 실행되며 사람들이 내 웹 서비스에 액세스하는 방식입니다. nginx 구성은 ip B의 가상 머신으로 리디렉션됩니다.
IP A의 프록시 서버의 경우 내 사이트에서 사용할 수 있습니다.
server {
listen 443;
ssl on;
ssl_certificate nginx.pem;
ssl_certificate_key nginx.key;
client_max_body_size 200M;
server_name localhost 127.0.0.1;
server_name_in_redirect off;
location / {
proxy_pass http://10.10.0.59:80;
proxy_redirect http://10.10.0.59:80/ /;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
rewrite ^(.*) https://$http_host$1 permanent;
server_name localhost 127.0.0.1;
server_name_in_redirect off;
location / {
proxy_pass http://10.10.0.59:80;
proxy_redirect http://10.10.0.59:80/ /;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
그만큼 proxy_redirect
에서 찍은 내가 재 작성을 통해 HTTP POST 요청을 전달하기 위해 nginx를 얻는 방법?
공개 IP에 도달하는 모든 내용은 다시 쓰기 때문에 443에 도달합니다. 내부적으로 가상 머신에서 80으로 전달합니다.
그러나 구성을 테스트하기 위해 아래 스크립트와 같은 파이썬 스크립트를 실행할 때
import requests
data = {'username': '....', 'password': '.....'}
url = 'http://IP_A/api/service/signup'
res = requests.post(url, data=data, verify=False)
print res
print res.json
print res.status_code
print res.headers
을 받고 있습니다 405 Method Not Allowed
. nginx에서 우리는 내부 서버에 도달했을 때 내부 GET
헤더가 요청을 받았지만 내부 nginx가 요청 을 받고 있음을 발견했습니다 .POST
(Python 스크립트에 표시됨).
다시 쓰기에 문제가있는 것 같습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 다시 쓰기에 댓글을 달았을 때, 80을 확실히 맞았습니다. 다시 쓰기가 내부 서버와 통신 할 수 있으므로 다시 쓰기 자체에는 문제가 없습니다. 그것은 단지 재 작성 떨어 있어요 POST
에 GET
.
감사합니다!
(Nginx 포럼에서도 중요한 차단제이므로 질문을 할 것입니다 ...)
PUT
,POST
,DELETE
,GET
. 이전 설정에서는 군중에게 서비스를 제공하는 전면에이 추가 프록시가 없었습니다. 동일한 내부 서버 (테스트 서버)에서 동일한 구성을 가졌습니다. 잘 작동합니다.