Запуск Nginx и попытка перенаправления:
с www на не-www
http в https
Я понимаю, что есть похожие темы, но ни один из них не связан с тем же сценарием.
Я установил Webmin / Virtualmin и Fast-CGI. У меня много учетных записей / сайтов на этом сервере. Для mysite это серверный блок:
server {
listen my_server_IP;
server_name example.com www.example.com;
return 301 https://example.com$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 https://example.com$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 https://example.com$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 https://example.com$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 of your config from above, fastcgi etc>
}