我正在尝试将所有HTTP流量重定向到HTTPS,因此当我访问www.domain.com时,它会转到https://www.domain.com。这是我当前的.conf文件 -
server {
listen 80;
#listen [::]:80;
server_name www.domain.net;
rewrite ^(.*) https://www.domain.net$1 permanent;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.domain.net;
include other.conf;
#error_page 404 /404.html;
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
#include pathinfo.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
access_log /home/wwwlogs/www.domain.net.log access; }
它总是返回一个'重定向循环'我的域名错误,我尝试了很多不同的配置,但我总是遇到同样的问题。 (我很欣赏我的SSL没有配置,但它仍然有效)
如果有人能帮助我开展工作,我将不胜感激。
答案 0 :(得分:2)
您需要将ssl配置放在服务器中:
听443 ssl默认;
ssl on ssl_certificate<<把你的.crt>&gt ;;
ssl_certificate_key<<把你的.key>&gt ;;#force https-redirects
if($ scheme = http){ return 301 https:// $ server_name $ request_uri; }
答案 1 :(得分:0)
你把你的文件放在服务器上来监听端口443吗?
因为如果你没有配置你的nginx来监听端口443,你的服务器将从80重定向到https。从https到http(80) - 这会引起你的循环。
要构建重定向,您只需要这样:
server {
listen 80 default;
server_name <<your domain>>;
return 301 https://<<your domain>>$request_uri;}
使用您在443 ssl上执行的相同配置,但进行以下更改:
listen 443 ssl;
ssl_certificate <<your .crt>>;
ssl_certificate_key <<your .key>>;
ssl_client_certificate <<your client certificate .crt>>;