2017-03-07 329 views
1

希望有人能指出我的配置失败。Nginx - 上游重定向不起作用

我有一个问题,我的上游重定向不工作,因为它应该(必须是配置问题),它从https重定向到http,我目前没有运行。很明显,我需要我的https服务器只提供安全的流量,而不是重定向到http。

这是我收到我的浏览器吧: http://nginx.dev1.whispir.net/tmpl/home.tmpl#!/web_com/View_Workspace?rd=1307

但我需要它去上游通过https。

在浏览器的调试我看到: GET http://nginx.dev1.whispir.net/tmpl/home.tmpl网:: ERR_CONNECTION_REFUSED

无法捉摸为什么它是创下80端口 我已经关闭HTTP端口80,因为我需要工作的HTTPS 。 我希望有人能帮助我,让我疯狂。

感谢您的期待。

这是我对443端口

upstream HttpsMainWorker { 
     # Sticky session 
     ip_hash; 

    server 10.1.161.59:8080; 
    server 10.1.161.56:8080; 
} 

upstream HttpsReportWorker { 
     # Sticky session 
     ip_hash; 

    server 10.1.161.64:8080; 
} 

upstream HttpsApiWorker { 
     # Sticky session 
     ip_hash; 

    server 10.1.161.51:8080; 
} 

server { 
    listen    443 ssl; 
    server_name   nginx.dev1.whispir.net; 
    keepalive_timeout 70; 


    ssl on; 
    ssl_certificate   /etc/nginx/certs/2016/61d2d567aece769c.crt; 
    ssl_certificate_key  /etc/nginx/certs/2016/wildcard.dev1.whispir.netclear.pem; 
    ssl_session_timeout  5m; 

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; 
    ssl_prefer_server_ciphers on; 

    access_log   /var/log/nginx/app17web/access.log main; 
    error_log   /var/log/nginx/app17web/error.log debug; 

    root    /data/htdocs/app17web.dev1.whispir.net; 
    index index.jsp; 

    rewrite_log on; 
    location ~* \.(?:ico|css|js|gif|jpe?g|png|pdf)$ { 
    expires 1d; 
    add_header Pragma public; 
    add_header Cache-Control "public"; 
    } 

    error_page 401  /401.html; 
    error_page 403  /403.html; 
    error_page 500 502 /500.html; 
    error_page 503  /503.html; 
    error_page 400 404  /404.html; 
    location = /404.html { 
     internal; 
    } 

    error_page 500 502 503 /50x.html; 
     location = /50x.html { 
      root html; 
     } 

    location /{ 
    try_files $uri @backend; 
    } 



location @backend { 
    proxy_pass http://HttpsMainWorker; 
    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_set_header X-Forwarded-Proto $scheme; 
    } 

    location ~ \.jsp$ { 
     proxy_pass      http://HttpsMainWorker; 
     proxy_next_upstream    error timeout invalid_header http_500; 
     proxy_connect_timeout 5s; 

    } 


    location /ivr/ivrRequest.ivr { 
     proxy_pass      http://HttpsMainWorker; 
     proxy_next_upstream    error timeout invalid_header http_500; 
     proxy_connect_timeout 5s; 

    } 

    location /app/cfu/* { 
     proxy_pass      http://HttpsMainWorker; 
     proxy_next_upstream    error timeout invalid_header http_500; 
     proxy_connect_timeout 5s; 

    } 

    location /tmpl/* { 
     proxy_pass      http://HttpsMainWorker; 
     proxy_next_upstream    error timeout invalid_header http_500; 
     proxy_connect_timeout 5s; 

    } 

回答

0

最有可能的上游应用程序(端口8080上运行)时发出重定向当前的配置。要么需要将其配置为在重定向中使用https,要么需要通知前端连接已通过https

您的配置为此目的插入标头X-Forwarded-Proto,但仅限于locations之一。

proxy_set_header指令从外块继承,仅当没有其它proxy_set_header指令是在location设置。

所以,要么添加proxy_set_header X-Forwarded-Proto $scheme;声明为每个受影响的location块,或移动所有proxy_set_header指令到server块范围。

例如:

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_set_header X-Forwarded-Proto $scheme; 

location @backend { 
    proxy_pass http://HttpsMainWorker; 
} 
location ~ \.jsp$ { 
    proxy_pass      http://HttpsMainWorker; 
    proxy_next_upstream    error timeout invalid_header http_500; 
    proxy_connect_timeout 5s; 
} 
location /ivr/ivrRequest.ivr { 
    proxy_pass      http://HttpsMainWorker; 
    proxy_next_upstream    error timeout invalid_header http_500; 
    proxy_connect_timeout 5s; 
} 
location /app/cfu/* { 
    proxy_pass      http://HttpsMainWorker; 
    proxy_next_upstream    error timeout invalid_header http_500; 
    proxy_connect_timeout 5s; 
} 
location /tmpl/* { 
    proxy_pass      http://HttpsMainWorker; 
    proxy_next_upstream    error timeout invalid_header http_500; 
    proxy_connect_timeout 5s; 
} 

详见this document

+0

嗨理查德,感谢您的快速反应,它像一个魅力,非常感谢这一点。十分感谢。 – glfab