Rumah > Soal Jawab > teks badan
Sebagai contoh, saya ingin mengakses 127.0.0.1:9000 melalui 127.0.0.1/play/
Konfigurasi semasa saya adalah seperti berikut:
location / {
root F:\Personal\ck;
index index.html;
}
location ~ ^/play/ {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
Apabila saya benar-benar mengakses 127.0.0.1/play/, ia telah mengakses 127.0.0.1:9000/play/ Adakah saya tidak langsung mengakses port 9000, tetapi meletakkan nama direktori di hujungnya?
阿神2017-05-16 17:23:03
Kerana anda meminta /play/ dan permintaan ini telah dihantar ke http://127.0.0.1:9000 Laluan permintaan ini juga akan diluluskan.
Apa yang anda inginkan boleh menjadi kenyataan,
location ~ ^/play(/?)(.*){
proxy_pass http://127.0.0.1:9000/$;
}
Maksud kod ini ialah menghantar permintaan untuk /play/xx ke http://127.0.0.1:9000/xx
Cara yang lebih baik
location /play {
proxy_pass http://127.0.0.1:9000/;
}
Perhatikan '/' di hujung
Lihat di sini
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
滿天的星座2017-05-16 17:23:03
Oleh kerana proxy_pass hanyalah proksi terbalik, ia tidak boleh menulis semula peraturan URL Ia hanya menukar nama hos.
Kalau nak keluarkan benda lepas, kena guna rewrite
location ~^/play/ {
proxy_pass http://127.0.0.1:9000;
rewrite "^/play(.*)$" break;
...
}