我正在运行一个 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;
}
Apache 配置:
<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>
有人能看出我做错了什么吗?我很困惑,仅仅更改服务器名称就可以做到这一点。
答案1
这是缓存问题 - 这是我的一个愚蠢的疏忽。清除缓存后一切正常。