我的问题是,如果我重新启动 NGINX,HTTP 工作正常,但 HTTPS 不可用。我收到连接超时消息。我检查了是否可以在本地连接并检查了证书。这也很好用。我没有防火墙,但端口或其他内容似乎被阻止了。请帮忙...
server {
server_name help.XXXX.de;
listen 80;
listen 443 default ssl;
ssl on;
ssl_certificate /etc/ssl/localcerts/0001_MAILcert.pem;
ssl_certificate_key /etc/ssl/localcerts/0001_MAILcert.key;
ssl_ciphers SSLv3+HIGH:RC4+MEDIUM:!aNULL:!eNULL:!3DES:!MD5:@STRENGTH;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1;
access_log /var/www/XXXX.de/help.XXXX.de/logs/access.help.log main;
index index.html index.htm index.php;
root /var/www/XXXX.de/help.XXXX.de/htdocs;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri @rewrite;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
我正在将 Debian 与 NGINX 1.2.6 和 PHP-FPM 结合使用
最佳答案
您的第二个位置 block 需要位于主服务器 block 内,否则您的 ssl 配置将不适用于它。
您的配置适用于 HTTP 的原因是因为监听指令默认为 *:80
并且这被应用于第二个位置 block ,因为它没有外部服务器 block 配置。
可能不相关,但是 try_files $uri @rewrite;
行看起来错误,因为您的配置中没有名为 location @rewrite
的命名位置,但这应该是'不会导致 https 不可用。
此外,不需要 ssl
指令,因为 listen
指令执行此功能。
你能试试这个吗:
server {
server_name help.XXXX.de;
listen 80;
listen 443 default ssl;
ssl_certificate /etc/ssl/localcerts/0001_MAILcert.pem;
ssl_certificate_key /etc/ssl/localcerts/0001_MAILcert.key;
ssl_ciphers SSLv3+HIGH:RC4+MEDIUM:!aNULL:!eNULL:!3DES:!MD5:@STRENGTH;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1;
access_log /var/www/XXXX.de/help.XXXX.de/logs/access.help.log main;
index index.html index.htm index.php;
root /var/www/XXXX.de/help.XXXX.de/htdocs;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri @rewrite;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
如果连接仍然存在问题,请检查 Nginx 是否使用 SSL 模块进行编译:
nginx -V
如果输出不包含以下行,您需要重新编译:
--with-http_ssl_module
关于ssl - NGINX HTTPS 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14605354/