Server proxy saya berjalan di ip A dan ini adalah cara orang mengakses layanan web saya. Konfigurasi nginx akan mengarahkan ulang ke mesin virtual di ip B.
Untuk server proxy pada IP A, saya memilikinya di situs saya-tersedia
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;
}
}
Itu proxy_redirect
diambil dari bagaimana saya mendapatkan nginx untuk meneruskan permintaan HTTP POST melalui penulisan ulang?
Segala sesuatu yang mengenai IP publik akan mencapai 443 karena penulisan ulang. Secara internal, kami meneruskan ke 80 pada mesin virtual.
Tetapi ketika saya menjalankan skrip python seperti yang di bawah ini untuk menguji konfigurasi kami
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
Saya mendapatkan 405 Method Not Allowed
. Di nginx kami menemukan bahwa ketika mengenai server internal, nginx internal mendapatkan GET
permintaan, meskipun di header asli kami melakukan POST
(ini ditunjukkan dalam skrip Python).
Jadi sepertinya menulis ulang memiliki masalah. Adakah yang tahu bagaimana cara memperbaikinya? Ketika saya berkomentar menulis ulang, pasti mencapai 80, dan sudah selesai. Karena menulis ulang dapat berbicara dengan server internal kami, jadi menulis ulang itu sendiri tidak memiliki masalah. Hanya saja penulisan ulang jatuh POST
ke GET
.
Terima kasih!
(Ini juga akan ditanyakan di forum Nginx karena ini adalah pemblokir kritis ...)
PUT
,POST
,DELETE
,GET
. Dalam pengaturan saya sebelumnya, saya tidak memiliki proksi tambahan ini di bagian depan yang melayani kerumunan. Saya memiliki konfigurasi yang sama pada server internal yang sama (server pengujian kami). Itu bekerja dengan baik.