重定向HTTP到HTTPS从Nginx的不工作
类型:https://example.com =>SSL OK 但是类型:www.example.com和example.com是http 没有重定向 HTTPS。 (www重定向到非www)。重定向HTTP到HTTPS从Nginx的不工作
的WordPress地址(URL)及网站地址(URL):HTTPS // example.com
/etc/nginx/conf.d/example.com.conf
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl on;
ssl_certificate /etc/nginx/ssl/cert_chain.crt;
#ssl_CACertificate_File /etc/nginx/ssl/example.com.ca-bundle;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
access_log off;
# access_log /home/example.com/logs/access_log;
error_log off;
# error_log /home/example.com/logs/error.log;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
root /home/example.com/public_html;
include /etc/nginx/conf/ddos2.conf;
index index.php index.html index.htm;
server_name example.com;
如何解决它呢? 对不起我英文不好,谢谢。
你的配置不清楚,你最后有一个重复的server_name example.com
行。
尝试使用此:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
我尝试了它,并删除了重复代码'server_name example.com'。重启nginx的,但我的问题仍然是 –
'#服务nginx的重新启动 nginx的:[警告]上0.0.0.0:80冲突的服务器名 “example.com”,忽略 nginx的:[提醒]冲突的服务器名“www.example.com “在0.0.0.0:80上,忽略 nginx:[警告]冲突的服务器名称”example.com“在0.0.0.0:80上,忽略 停止nginx:[OK] nginx:nginx:[warn]冲突的服务器名称“example.com” 上0.0.0.0:80,忽略 nginx的:[警告]上0.0.0.0:80冲突的服务器名 “www.example.com”,忽略 nginx的:[提醒]冲突的服务器名“example.com “关于0.0.0.0:80,ignored' –
的支票,你只能有一个'{服务器80听...'你可以先尝试只是想我放在这里,后来让别人块,使用'nginx的-t'测试config – nbari
嗨尝试使用此代码
它会帮助你重定向到https 说你进入http://www.example.com会重定向到https://www.example.com
另外,如果有人进入HTTP: example.com会重定向到https://www.example.com<VirtualHost *:80> ServerName www.example.com DocumentRoot /usr/local/apache2/htdocs Redirect permanent/https://www.example.com/ </VirtualHost>
<VirtualHost_default_:443> ServerName www.example.com DocumentRoot /usr/local/apache2/htdocs SSLEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L] </VirtualHost>
这可能是由模糊的服务器名称造成的。尝试使用以下内容:
server {
server_name example.com www.example.com;
listen 80;
listen 443 ssl; # Listen for SSL at port 443 as well
# ... other config - certificates and such
# If a user tries to come through http, redirect them through https
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
}
您可以通过运行sudo nginx -t
来检查您的nginx配置。
您是否在服务器配置中启用了https支持? – LethalProgrammer
是的,我确实启用了。 –