Mon serveur proxy fonctionne sur ip A et c'est ainsi que les gens accèdent à mon service Web. La configuration nginx redirigera vers une machine virtuelle sur ip B.
Pour le serveur proxy sur IP A, je l'ai dans mes sites disponibles
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;
}
}
Le a proxy_redirectété tiré de comment puis-je obtenir nginx pour transférer les demandes HTTP POST via la réécriture?
Tout ce qui frappe l'IP publique atteindra 443 en raison de la réécriture. En interne, nous transmettons à 80 sur la machine virtuelle.
Mais quand je lance un script python tel que celui ci-dessous pour tester notre configuration
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
Je reçois un 405 Method Not Allowed. Dans nginx, nous avons constaté que lorsqu'il atteignait le serveur interne, le nginx interne recevait une GETdemande, même si dans l'en-tête d'origine, nous avons fait une POST(cela a été montré dans le script Python).
Il semble donc que la réécriture ait un problème. Une idée de comment résoudre ce problème? Quand j'ai commenté la réécriture, elle atteint 80 à coup sûr, et elle est passée. Puisque la réécriture a pu parler à notre serveur interne, la réécriture elle-même n'a donc aucun problème. Il est juste la réécriture a chuté POSTà GET.
Je vous remercie!
(Cela sera également demandé sur le forum Nginx car il s'agit d'un bloqueur critique ...)
PUT,POST,DELETE,GET. Dans ma configuration précédente, je n'avais pas ce proxy supplémentaire à l'avant pour servir la foule. J'avais la même configuration sur le même serveur interne (notre serveur de test). Ça marche bien.