这是我的问题。为了在每个域上使用 letsencrypt acme,我include /etc/nginx/acme.conf
在每个 vhost 配置中添加了以下内容:
acme.conf
location /.well-known/acme-challenge {
alias /var/www/froxlor/.well-known/acme-challenge;
allow all
location ~ /.well-known/acme-challenge/(.*) {
default_type text/plain;
}
}
虚拟主机配置文件
server {
listen <IP>:80;
server_name example.de;
include /etc/nginx/acme.conf;
root /var/customers/webs/example/example.de/;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ @rewrites;
}
location @rewrites {
rewrite ^ /index.php last;
}
location /webalizer {
alias /var/customers/webs/example/webalizer/example.de/;
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/froxlor-htpasswd/1-229049931c767630a601718d62346214.htpasswd;
}
location ~ ^(.+?\.php)(/.*)?$ {
try_files /ec157a05122f20edd82ad600247730bf.htm @php;
}
location @php {
try_files $1 = 404;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)\$;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_pass unix:/var/run/example-example.de-php-fpm.socket;
fastcgi_index index.php;
}
}
我输入了一个test.html
,.well-known/acme-challenge
这样example.de/.well-known/acme-challenge/test.html
应该会返回该文件,但是我得到的是重定向到example.de/well-known/acme-challenge/test.html/
。
我在 acme.conf 中尝试过的事情:
- 改变位置至
^~ /.well-known/acme-challenge
-效果相同 - 改变位置至
^~ /\.well-known/acme-challenge
-效果相同 root /var/froxlor
代替使用alias
- 效果相同
我认为我在 nginx 位置解析顺序的某个地方迷失了方向,我尝试使用以下命令进行修复:
- 解决订单时
- 对于正则表达式
- 我不知道
答案1
service php5-fpm restart
尽管我修改了配置,但 php5-fpm 服务并未使用新配置运行。killingphp5-fpm它通过kill
并service php5-fpm start
解决了它。