我正在运行一个 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>
谁能看到我做错了什么?我很困惑,简单地更改服务器名称就是这样做的。
这是一个缓存问题——对我来说是一个愚蠢的疏忽。清除缓存,一切正常。