Nginx multilayer reverse proxy get wrong redirect in http header

Viewed 374

I am using two Nginx machines as reverse proxy,but get wrong Host in the Browser.The detail conf is blow. In Proxy1(192.168.0.1)

 upstream proxy2 {
    server 192.168.0.2:8040;
 }
 server {
     listen 8041;
     server_name  localhost;
     root   html;
     index  index.html index.htm index.php;

     location / {
         proxy_pass  http://proxy2;

         #Proxy Settings
         #proxy_redirect     off;
         proxy_set_header   Host             $host:$server_port;
         proxy_set_header   X-Real-IP        $remote_addr;
         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
         proxy_max_temp_file_size 0;
         proxy_connect_timeout      90;
         proxy_send_timeout         90;
         proxy_read_timeout         90;
         proxy_buffer_size          4k;
         proxy_buffers              4 32k;
         proxy_busy_buffers_size    64k;
         proxy_temp_file_write_size 64k;
    }
 }

In Proxy2 (192.168.0.2)

upstream backend {
    server 192.168.0.2:8041;
    server 192.168.0.3:8041;
}


server{
    listen 8040;
    server_name localhost;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

In the backend server I just use php redirect / to /auth/login

Then when I visit http://192.168.0.1:8041 , I show go to http://192.168.0.1:8041/auth/login, but it redirect tohttp://192.168.0.1:8040/auth/login , looks like something go wrong with the port passing . Anyone can help me ?

0 Answers
Related