我正在使用以下 Nginx 配置块
server {
listen 80;
server_name MyDomain.co.uk www.MyDomain.co.uk *.MyDomain.co.uk;
return 301 https://www.MyDomain.co.uk$request_uri;
}
server {
listen 443;
server_name MyDomain.co.uk www.MyDomain.co.uk *.MyDomain.co.uk;
access_log /var/www/vhosts/MyDomain.co.uk/logs/access.log;
error_log /var/www/vhosts/MyDomain.co.uk/logs/error.log;
root /var/www/vhosts/MyDomain.co.uk/httpdocs;
ssl on;
ssl_certificate /etc/nginx/ssl/MyDomain.co.uk.crt;
ssl_certificate_key /etc/nginx/ssl/MyDomain.co.uk.key;
ssl_protocols TLSv1.1 TLSv1.2;
...
...
...
}
这是为了实现通过以下方式访问我网站的所有流量
http://MyDomain.co.uk
http://www.MyDomain.co.uk
https://MyDomain.co.uk
应该总是被转发,https://www.MyDomain.co.uk
但我有两个问题
一切都很好,但
https://MyDomain.co.uk
从未转发,https://www.MyDomain.co.uk
不知道为什么,但可能是因为我的证书仅对有效www.MyDomain.co.uk
,而对域无效MyDomain.co.uk
?但如果我没错的话,我已经在这个论坛上看到其他帖子,用户正在实现这一点?在对 Nginx 块配置进行上述更改以将非 https 转发到 https 并将非 www 转发到 www 后,由于某种原因,我的 Magento 后端无法正常工作,我可以正常登录到后端,但是当我尝试执行任何操作(例如刷新缓存或任何其他功能)时,它总是显示以下内容,并且什么也没做
是不是因为Nginx的大部分设置都是在SSL阻止下?
答案1
编辑答案以包含完整配置。
您https://MyDomain.co.uk
不会转发,https://www.MyDomain.co.uk
因为您MyDomain.co.uk
的https
块中的域没有任何重定向。
您应该从当前监听端口的块中删除MyDomain.co.uk
和,并添加以下块:*.MyDomain.co.uk
server
443
server {
listen 80;
server_name MyDomain.co.uk www.MyDomain.co.uk *.MyDomain.co.uk;
return 301 https://www.MyDomain.co.uk$request_uri;
}
server {
listen 443;
server_name MyDomain.co.uk *.MyDomain.co.uk;
ssl on;
ssl_certificate /etc/nginx/ssl/MyDomain.co.uk.crt;
ssl_certificate_key /etc/nginx/ssl/MyDomain.co.uk.key;
ssl_protocols TLSv1.1 TLSv1.2;
return 301 https://www.MyDomain.co.uk$request_uri;
}
server {
listen 443;
server_name www.MyDomain.co.uk;
access_log /var/www/vhosts/MyDomain.co.uk/logs/access.log;
error_log /var/www/vhosts/MyDomain.co.uk/logs/error.log;
root /var/www/vhosts/MyDomain.co.uk/httpdocs;
ssl on;
ssl_certificate /etc/nginx/ssl/MyDomain.co.uk.crt;
ssl_certificate_key /etc/nginx/ssl/MyDomain.co.uk.key;
ssl_protocols TLSv1.1 TLSv1.2;
}
这样,您将拥有一个server
用于重定向其他域的块,然后拥有一个server
处理请求的主块。
因此,您有三个虚拟主机:
1) http
,将所有请求重定向到www.MyDomain.co.uk
2) https
,将请求重定向MyDomain.co.uk
到*.MyDomain.co.uk
3 www.MyDomain.co.uk
)https
以处理最终的请求www.MyDomain.co.uk
。