鍍金池/ 問答/Linux/ 實現(xiàn)https網(wǎng)站nginx配置問題

實現(xiàn)https網(wǎng)站nginx配置問題

我按照企鵝的代碼實現(xiàn)nginx配置(參數(shù)都已修改,并且能訪問)
現(xiàn)在有幾個問題:
1.第一個upstream是什么?
2.我現(xiàn)在每次訪問http都會跳轉(zhuǎn)https,即使刪除了rewrite也是,如何分開
3.如何把靜態(tài)網(wǎng)站掛到https域名下,我嘗試設置了root root/myweb;也是502返回

upstream app_weapp {
    server localhost:5757;
    keepalive 8;
}

server {
    listen      80;
    server_name wx.ijason.cc;

    rewrite ^(.*)$ https://$server_name$1 permanent;
}

server {
    listen      443;
    server_name wx.ijason.cc;

    ssl on;

    ssl_certificate           /data/release/nginx/1_wx.ijason.cc_bundle.crt;
    ssl_certificate_key       /data/release/nginx/2_wx.ijason.cc.key;
    ssl_session_timeout       5m;
    ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers               ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
    ssl_session_cache         shared:SSL:50m;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://app_weapp;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
回答
編輯回答
朽鹿
  1. upstream你可以當做負載均衡,比如你做了如下配置

    upstream app_weapp {
        server localhost:5757;
        server localhost:5758;
    }

    那么你收到的請求將會分流到這兩個應用,當然如果你是同一個應用部署到兩個服務器,比如

    upstream app_weapp {
        server 192.168.2.1:5757;
        server 192.168.2.2:5757;
    }

    那么你的流量就會被分流到這兩個服務器,和下面的proxy_pass是一起出現(xiàn)的,還有一些負載均衡的算法,具體可以看文檔: Using nginx as HTTP load balancer。

  2. 訪問http強制跳轉(zhuǎn)到https的確是rewrite在起作用,大概是你改完之后沒有重新加載配置:nginx -s reload
  3. 如果是靜態(tài)頁面,可以直接刪掉 location /...一整段的代碼,upstream也可以刪掉,然后整塊直接用root代替。如果一定要使用upsteam,那么你的靜態(tài)頁面必須部署在localhost:5757可以訪問到的地方

    • 解決方案1:直接拋棄upsteam,將資源掛載在https

      server {
          listen      443;
          server_name wx.ijason.cc;
          root root/myweb;
          ssl on;
      
          ssl_certificate           /data/release/nginx/1_wx.ijason.cc_bundle.crt;
          ssl_certificate_key       /data/release/nginx/2_wx.ijason.cc.key;
          ssl_session_timeout       5m;
          ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
          ssl_ciphers               ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
          ssl_session_cache         shared:SSL:50m;
          ssl_prefer_server_ciphers on;
          
      }
    • 解決方案2:保留upsteam,添加以下配置就好了,以下配置又增加了一個應用,可以通過localhost:5757訪問,配合上面的httpsupstream可以讓訪問https的流量被轉(zhuǎn)發(fā)到這里過來

      server {
          listen  5757;
          root root/myweb;
          index index.html;
      }
2017年5月27日 18:01