Saya menggunakan nginx
sebagai proksi terbalik dan ketika saya masuk di antarmuka web saya, saya diarahkan ke URL yang diproksi. Saya ingin menghindarinya dan selalu menyimpan "server_name" sebagai URL. Apa itu mungkin?
Ini milik saya /etc/nginx/conf.d/my_app.conf
:
server {
listen 443 ssl;
server_name my-app.net;
ssl_certificate /etc/pki/tls/certs/my-app.cer;
ssl_certificate_key /etc/pki/tls/private/my-app.key;
ssl_protocols TLSv1.1 TLSv1.2;
access_log /var/log/nginx/my-app.access.log main;
location / {
proxy_pass http://ip_of_the_app:7180/;
proxy_redirect off;
}
}
Saya terhubung http://my-app.net
, memasukkan informasi login, saya kemudian diarahkan ke http://ip_of_the_app:7180
halaman login yang sama, dan saya harus login lagi. Bisakah login ganda ini dihindari?
linux
nginx
reverse-proxy
tonio94
sumber
sumber
Jawaban:
Tidak menetapkan
proxy_redirect
untukoff
, yang tidak melakukan apa yang Anda pikir itu adalah melakukan.proxy_redirect
melakukan sesuatu yang mirip dengan penulisan ulang URL, misalnya:Ini memungkinkan Anda meng-host
/sales/
jalur di tempat lain. Tetapi bahkan kemudian, parameter default untukproxy_redirect
melakukan hal itu untuk Anda secara gratis. Defaultnya adalah untuk mengarahkan ulang lokasi ke apa pun yang adaproxy_pass
(dan parameter default digunakan ketika Anda tidak mengaturproxy_redirect
sama sekali, atau menggunakanproxy_redirect default;
).Anda tidak perlu mengatur
proxy_redirect
.Apa yang Anda lewatkan adalah tajuk yang perlu dikirim ke aplikasi. Yang paling penting dari mereka adalah
HOST
. Ini akan melakukan proxy yang diinginkan dan akan menjaga URL yang benar di browser.Perhatikan bahwa aplikasi at
http://ip_of_the_app:7180/
sekarang akan menerima permintaan denganHost: my-app.net
tajuk.Anda juga harus mempertimbangkan menggunakan beberapa tajuk lagi:
Ini akan memungkinkan untuk masuk lebih baik ke dalam aplikasi di
http://ip_of_the_app:7180/
.X-Forwarded-For
memberikan IP dari klien aktual (sebagai lawannginx
dari IP s) danX-Forwarded-Proto
untuk memeriksa apakah klien terhubung kenginx
melalui HTTP atau HTTPS.sumber
Referer
hanya$http_referer
menyalin dari permintaan. Itu tidak berfungsi jika permintaan tidak memiliki tajuk Referer, oleh karena itu hardcoding adalah solusi dalam beberapa kasus.