我正在使用 Nginx 来托管许多虚拟主机(或Nginx 命名法中的服务器块)。这些主机都共享同一个域,每个都分配了自己的子域。一个子域进入一个无限的重定向循环,显然是不受欢迎的行为。
注意:我已经编辑了我的域名并将其替换为<mysite>
.
根域 -www.<mysite>.com
按预期接收请求。它还将 HTTP 请求重定向到 HTTPS。它配置在<mysite>-www
.
子域assets.<mysite>.com
也按预期接收请求。它未配置为将 HTTP 重定向到 HTTPS,提供任一协议。没有麻烦。它配置在<mysite>-holding
.
最终的子域soft.<mysite>.com
配置相同,assets.<mysite>.com
但它步履蹒跚。相反,它会在重定向循环中发送浏览器,每次都指向https://soft.<mysite>.com
This is 尽管此 vhost 的配置文件中没有此类设置。它配置在<mysite>-soft
.
配置为<mysite>-www
:
server {
server_name www.<mysite>.com;
listen 80 default_server ;
listen [::]:80 default_server;
location / {
return 301 https://$server_name$request_uri;
}
root /var/www/html;
}
server {
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/www.<mysite>.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.<mysite>.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
root /var/www/html;
server_name www.<mysite>.com;
error_page 404 /404.html;
location / {
limit_req zone=mylimit burst=20 nodelay;
try_files $uri $uri/ =404;
index index.html index.htm;
}
}
配置为<mysite>-holding
:
server {
listen 80;
listen [::]:80;
listen 443 ssl;
server_name assets.<mysite>.com;
ssl_certificate /etc/letsencrypt/live/assets.<mysite>.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/assets.<mysite>.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
root /var/www/holding/html;
location / {
limit_req zone=mylimit burst=20 nodelay;
try_files $uri $uri/ =404;
index index.html;
}
的配置文件soft.<mysite>.com
与上面的相同,除了它说“资产”它说“软”。然而它进入了这个无限的重定向循环。
我试过改变位置指令。我查阅了比预期更好的文档。尽管如此,它还是会循环。帮助将不胜感激!
碰巧的是,问题如下:
我没有正确地从
/sites-enabled
to符号链接/sites-available
,它使用了一个旧的副本,<mysite>-www
它导致了重定向循环。在我的问题中如上所述配置文件是解决方案。将其复制到启用站点或正确符号链接将解决处于类似困境中的任何人的问题。
过失。