Rumah  >  Soal Jawab  >  teks badan

Masalah dengan nginx reverse proxy tomcat

Hello semua, saya ada soalan

Penerangan masalah:

location ^~ /tomcat/ {
            proxy_pass   http://127.0.0.1:8080/;
            proxy_redirect  off;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }

location ^~ /ife2017/ {
            proxy_pass   http://127.0.0.1:8080/ife2017/;
            proxy_redirect  off;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            }

Di atas adalah sebahagian daripada konfigurasi nginx saya, tujuannya ialah

1 Lompat semua permintaan dari www.abc.com/tomcat/xxx ke tomcat, fungsinya normal

2. Lompat semua permintaan untuk www.abc.com/ife2017/xxx ke tomcat, dan kemudian lompat ke ife2017 melalui fungsinya bukan biasa

Nota: ife2017 ialah folder dalam direktori akar tomcat, ia boleh diakses secara normal sebelum menggunakan proksi nginx

Prestasi khusus ialah www.abc.com/ife2017/123 boleh melompat secara normal tanpa nombor port
Tetapi www.abc.com/ife2017/123/456 tidak boleh melompat secara normal dan akan melompat ke www.127.0 .0.1.com /ife2017/123/456

Penyelesaian semasa saya ialah menukar 127.0.0.1 kepada nama domain sebenar, tetapi dalam kes ini nombor port 8080 akan ditambah selepas lompatan Walaupun masalahnya tidak besar, saya masih mahukan penyelesaian yang sempurna

Terima kasih semua terlebih dahulu

巴扎黑巴扎黑2714 hari yang lalu445

membalas semua(1)saya akan balas

  • 某草草

    某草草2017-05-16 17:11:04

    Masalah konfigurasi proksi terbalik, tiada pilihan yang serupa dalam tomcat并不知道他在nginx后面,所以发送的重定向响应头仍然是使用后端的地址。在apache中可以通过配置ProxyPassReverse选项修改后端发给client的响应头来实现,在nginx, jadi tambah maklumat proksi pada permintaan yang dihantar ke bahagian belakang (beritahu tomcat bahawa terdapat proksi di hadapannya):

    server {
        listen myhost:80;
        server_name  myhost;
        location / {
            root /path/to/myapp/public;
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://myapp:8080;
        }
    }

    Dokumen rujukan: Penyelesaian NGINX untuk Apache ProxyPassReverse

    balas
    0
  • Batalbalas