Jul*_*els 5 subdomain redirect nginx meteor lets-encrypt
我有一个运行两个子域的 Nginx 服务器。其中一个使用 proxy_pass 将所有内容重定向到 Meteor 应用程序,另一个子域仅使用 Laravel,但位于与普通域不同的目录中。
\n\n因此,当我开始时./letsencrypt-auto,我收到两个子域的以下错误消息:
Failed authorization procedure. subdomain.mydomain.com (http-01): urn:acme:error:unauthorized ::\nThe client lacks sufficient authorization :: Invalid response from http://subdomain.mydomain.com/.well-known/acme-challenge/xyzxyzxy_xzyzxyxyyx_xyzyxzyxz: "<html>\n<head><title>404 Not Found</title></head>\n<body bgcolor="white">\n<center><h1>404 Not Found</h1></center>\nRun Code Online (Sandbox Code Playgroud)\n\n我对此的解释是,它不起作用,因为我的 Laravel-Subdomain 不在,/var/www/domain.com/html但在/var/www/laravel/html,而我的 Meteor-Application 在其他地方,而 ngnix 只是进行代理传递。
所以我的问题是:我可以将/.well-known/acme-challenge两个子域重定向到真正的 /.well-known ,这样 LetsEncrypt-Auto 就不会抛出此错误吗?
我试过了
\n\nlocation \'/.well-known/acme-challenge\' {\n default_type "text/plain";\n root /tmp/letsencrypt-auto;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n但它没有用...
\n\n我的 Meteor 子域的配置:
\n\nserver {\n listen 80;\n listen [::]:80;\n\n # SSL configuration\n listen 443 ssl;\n listen [::]:443 ssl;\n\n ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;\n\n [\xe2\x80\xa6] SSL stuff [\xe2\x80\xa6]\n\n\n server_name meteor.domain.com;\n\n location / {\n proxy_pass http://localhost:3000;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \'upgrade\';\n proxy_set_header X-Forwarded-For $remote_addr;\n }\n\n location ~ /.well-known {\n allow all;\n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我的 Laravel 子域的配置:
\n\nserver {\n listen 80;\n server_name laravel.domain.com;\n\n listen 443 ssl;\n listen [::]:443 ssl;\n\n ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;\n\n [\xe2\x80\xa6] SSL stuff [\xe2\x80\xa6]\n\n root /var/www/laravel/html;\n\n\n location / {\n try_files $uri $uri/ /index.php$is_args$args;\n }\n\n location ~ /.well-known {\n allow all;\n }\n\n location ~ \\.(hh|php)$ {\n fastcgi_keep_conn on;\n fastcgi_pass 127.0.0.1:9000;\n fastcgi_index index.php;\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n include fastcgi_params;\n }\n} \nRun Code Online (Sandbox Code Playgroud)\n
好的,感谢理查德·史密斯的提示,我解决了这个问题:
我将其保留在domain.com-Part 的Config-Part 中,如本教程中所述。
location / {
try_files $uri $uri/ =404;
}
Run Code Online (Sandbox Code Playgroud)
但将其放入 subdomain.domain.com 的配置部分中:
location /.well-known/ {
root /var/www/domain.com/html;
}
Run Code Online (Sandbox Code Playgroud)
它的作用是处理对subdomain.domain.com/.well-known/[anything]as 的任何请求domain.com/.well-known/[anything],因此不会出现 LetsEncrypt-Auto 的错误。
| 归档时间: |
|
| 查看次数: |
10651 次 |
| 最近记录: |