比较来自世界各地的卖家的域名和 IT 服务价格

Nginx: 重定向 http 在 https (错误:重定向太多)

跑步 Nginx 并尝试重定向:

从 www 非WWW

http 在 https

我明白存在类似的主题,但它们都没有与相同的场景相关联。

我已经安装了 Webmin / Virtualmin 和 Fast-CGI. 我有很多帐户 / 此服务器上的网站。 为了 mysite 这是服务器单元:

server {
listen my_server_IP;
server_name example.com www.example.com;
return 301 [url=https://example.com]https://example.com[/url]$request_uri;
root /home/example/public_html;
index index.html index.htm index.php;
access_log /var/log/virtualmin/example.com_access_log;
error_log /var/log/virtualmin/example.com_error_log;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME /home/example/public_html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT /home/example/public_html;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/php-nginx/148180748420424.sock/socket;
}
# htaccess
location / {
try_files $uri $uri/ /index.php?$args;
}
#
listen my_server_IP:443 ssl;
ssl_certificate /home/example/ssl.cert;
ssl_certificate_key /home/example/ssl.key;
}

在它现在看起来的形式的配置不是我的工作,除了有点 #htaccess (转换为 Apache .htaccess 包容 "美丽的联系" 在 Wordpress) 和弦乐 "return 301".

证书 SSL 经过 LetsEncrypt, 如果重要的话。

我保存并重新启动 Nginx.

在请求网站时 Chrome 他告诉我 "ERR_TOO_MANY_REDIRECTS"

我究竟做错了什么? 我需要添加一些东西或删除吗?
已邀请:

奔跑吧少年

赞同来自:

这是当前配置的简化版本。 (减去任何不做任何合理的比特) 有一些添加的笔记,所以你可以看到正在发生的事情。 最后两行只是将所有东西返回到顶部。 因此,许多重定向错误。

server {
listen my_server_IP; #listen on IP x.x.x.x
listen my_server_IP:443 ssl; #listen on IP x.x.x.x on 443
server_name example.com www.example.com; #Of the requests on IP x.x.x.x look for those with with one of these headers. send to line below
return 301 [url=https://example.com]https://example.com[/url]$request_uri; #Send everything to the line above
}

这就是你需要的,你可以使用

if

声明,但不要让这个时间,只是你可以清楚地看到正在发生的事情。 它的行程更多,但它将起作用。

server {
listen my_server_IP;
server_name example.com www.example.com; #Listen for non-https requests
return 301 [url=https://example.com]https://example.com[/url]$request_uri; #Send to the correct https address
}
server {
listen my_server_IP:443 ssl;
server_name www.example.com; #Listen for https (www) requests
return 301 [url=https://example.com]https://example.com[/url]$request_uri; #Send to the correct https
ssl_certificate /home/example/ssl.cert;
ssl_certificate_key /home/example/ssl.key;
}
server {
listen my_server_IP:443 ssl;
server_name example.com;
ssl_certificate /home/example/ssl.cert;
ssl_certificate_key /home/example/ssl.key;
<rest above,="" config="" etc="" fastcgi="" from="" of="" your="">
}

</rest>

要回复问题请先登录注册