Nginx

在 nginx 中更改伺服器名稱會導致失敗

  • June 16, 2017

我正在執行一個 Web 應用程序的安裝,該應用程序使用 nginx 作為其 HTTPS 和 apache 來提供內容。

我剛剛在新機器上完成了升級版本的安裝,但我遇到了一個奇怪的問題。

當我使用 URL newapplication.mydomaincom 時,一切都很好。但是,當我嘗試通過將所有內容切換到 application.mydomain.com 來上線時,它不起作用 - 我只是得到測試“歡迎使用 nginx!” 頁。

我的 application.conf 文件在下面,請注意,如果我將“application.mydomain.com”的每個實例都更改為“newapplication.mydomain.com”,那麼它工作得很好——我可以在瀏覽器中輸入“newapplication.mydomain.com”並被重定向到 HTTPS。但是,當使用“application.mydomain.com”時,它會失敗。我可以輸入“application.mydomain.com:18804”,這有效(根據我的 apache 配置)。

Nginx 配置文件:

   upstream application {

           server 127.0.0.1:18805;

   }


   server {

           listen 18804;

           location / {

                   return 301 https://$host$request_uri;

           }

   }




   server {

           listen 80;

           location / {

                   return 301 https://$host$request_uri;

           }

   }



   server {

           listen 443 ssl;

           server_name application.mydomain.com;

           access_log /var/log/nginx/application.access.log;

           error_log /var/log/nginx/application-errors.log;

           ssl on;

           ssl_certificate_key /etc/ssl/private/my.key;

           ssl_certificate /etc/ssl/certs/my.crt;

           ssl_ciphers RC4:HIGH:!aNULL:!MD5;

           ssl_prefer_server_ciphers on;


           client_max_body_size 0;



           location / {

                   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_pass http://redmine;

           }

   }

   server {
       listen 18804;
       server_name application.mydomain.com;

       return 301 https://application.mydomain.com$uri;
   }

   server {
       listen 80;
       server_name application.mydomain.com;

       return 301 https://application.mydomain$uri;
}

阿帕奇配置:

<VirtualHost *:18805>
 DocumentRoot /var/www/html/application/public
 ServerName application.mydomain.com
 ServerAlias 127.0.0.1
 ErrorDocument 503 /maintenance.html
 RewriteEngine on
 RewriteCond %{DOCUMENT_ROOT}/../tmp/stop.txt -f
 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ /$1 [R=503,L]

<Directory /var/www/html/application/public/>
 AllowOverride all
 # MultiViews must be turned off.
 Options -MultiViews
</Directory>

 ErrorLog logs/application_3.3.3_log

</VirtualHost>

誰能看到我做錯了什麼?我很困惑,簡單地更改伺服器名稱就是這樣做的。

這是一個記憶體問題——對我來說是一個愚蠢的疏忽。清除記憶體,一切正常。

引用自:https://serverfault.com/questions/855908