运行 Nginx + Centos 7.2 + Wordpress
我正在为我的一个域名安装 SSL,当我在服务器配置中设置端口时,listen 443 ssl;
当我访问该域名时,它会提示我“欢迎使用 nginx”
但如果我将其改回,listen 80;
它将显示我的网站。
这是我的服务器域配置:
server{
listen 443 ssl;
server_name domain.com www.domain.com;
root /var/www/data/domain.com/public_html/;
index index.php index.html index.htm;
client_max_body_size 500M;
ssl on;
ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/domain.key;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/data/domain.com/public_html/;
}
location ~ \.php$ {
try_files $uri $uri/ /index.php?q=$uri&$args;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
这是我的 nginx.conf:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;
}
我花了 4 天时间尝试让 SSL 正常工作,但是,我不太走运。
另外,当我添加return 301 https://$host$request_uri;
到我的域配置时,我只收到“重定向太多”错误。
编辑:
因此,正如您在底部的 nginx.conf 中看到的那样,它包含了/etc/nginx/conf.d/*
因此出于某种原因它读取我的域配置,并跳过该操作并从“/etc/nginx/conf.d/*”处理 default.conf。
好吧,我仍然在思考我还能做些什么不同的事情。
答案1
好吧,Alexey Ten 在他的评论中给出了答案:如果你在调用你的网站时没有明确使用 https(“https://www.domain.com“) 您的服务器通过端口 80 进行寻址,如果不重定向,则监听 443 的服务器将不会提供任何服务。
你把重定向指令放在哪里了?你必须把它写入另一个服务器块,如下所示:
server {
listen 80;
return 301 https://$host$request_uri;
}
这会将所有内容重定向到 https。如果您只希望将对 domain.com 的请求重定向到 https,则可以向该块添加服务器名称指令(“server_name domain.com www.domain.com;”)。