在 Certbot 更改了其中一个站点的 Nginx site-conf 文件后,我在另外两个站点上遇到了网关错误。
全部沒有錯誤nginx -t
。
仅此出现于tail /var/log/nginx/error.log
:
2017/10/24 15:40:47 [错误] 27439#27439:*125 connect() 连接到上游时失败(111:连接被拒绝),客户端:66.249.69.71,服务器:domain.tld1,请求:“GET /category/%D7%9B%D7%9C%D7%9C%D7%99/HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“contfix.co.il”root@benqzq:~#
仅此出现于tail /var/log/nginx/access.log
:
185.188.204.5 - - [24/Oct/2017:15:44:13 +0000] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (兼容:MSIE 7.0;Windows NT 6.0)"
- nginx reset 没有错误。
这是我使用 Certbot 更改的站点的 site-conf:
server {
root /var/www/html/contfix.co.il;
server_name contfix.co.il www.contfix.co.il;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9000;
}
location ~ /\.ht {
deny all;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$ {
expires 365d;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/contfix.co.il/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/contfix.co.il/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
# Redirect non-https traffic to https
# if ($scheme != "https") {
# return 301 https://$host$request_uri;
# } # managed by Certbot
}
我没有选择使用 Certbot 完成的第二个站点的 site-conf 文件保持不变。
在安装和使用 Certbot 之前,两个站点都运行良好。
我去了,nginx/conf.d/ssl
但那里的文件包含密钥,而没有可以用来调试的东西。
我应该如何进一步调试这个问题?
更新
在我的域上使用 Certbot 时,我收到错误:
Could not open file: /etc/nginx/sites-enabled/default
当我这样做时,certbot renew --dry-run
我也得到了它,但我并没有在执行“certbot renew”时得到它。
答案1
主要问题是电脑生成图像处理正如我的 site-conf 文件中显示的,关于我的网站(负责依赖于 PHP 的数据处理)的指令在实施 SSL 后并不像它们应该的那样。
这是有效的新设置:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
关于我遇到的默认错误,只需转到 sites-enabled 并删除名为 default 的符号链接 inode。因此,即使您在 中有一个默认模板sites-available
,也不会使用它。