Nginx 寻找文件而不是端点?
Posted
技术标签:
【中文标题】Nginx 寻找文件而不是端点?【英文标题】:Nginx looking for file rather than endpoint? 【发布时间】:2022-01-18 16:34:29 【问题描述】:我使用以下 nginx 配置文件设置了 nginx 和 docker-compose,这里 api
和 kibana
是分别在端口 8080 和 5601 上运行的 docker 容器
user nobody;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events
worker_connections 1024;
http
server
listen 80;
server_name my-domain.com www.my-domain.com;
server_tokens off;
location /.well-known/acme-challenge/
root /var/www/certbot;
location /
return 301 https://$host$request_uri;
server
listen 443 ssl;
server_name my-domain.com www.my-domain.com;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/all/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/all/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location ^~ /
proxy_pass http://api:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
location ^~ /monitoring
proxy_pass http://kibana:5601/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
rewrite /monitoring/(.*)$ /$1 break;
我所有的容器都已启动并运行,一切似乎都很好,但是当我访问 https://my-domain.com
时,我会返回 This site can’t be reached
,如果我转到非安全的 http://my-domain.com/
,我会收到 nginx 404 错误,并进行以下登录容器
[error] 17#17: *13 open() "/etc/nginx/html/index.html" failed (2: No such file or directory), client: 123.456.789.101, server: my-domain.com, request: "GET / HTTP/1.1", host: "my-domain.com
它为什么要查找文件?我的 nginx 配置有问题吗?请帮忙
【问题讨论】:
配置文件被消耗了吗?检查nginx -T
活动配置。什么是假定的索引文件?应该用index index.php
或http-block中的任何东西给出
是的,正在使用配置文件,我做了nginx -t
得到语法是好的然后检查显示的路径中的文件并且它具有相同的配置。不应该有任何索引文件,我只想将它反向代理到我的节点 api 和 kibana 服务器
【参考方案1】:
找到了! ??♂️应该是这样的
proxy_set_header Host $host;
而不是
proxy_set_header Host $http_host;
编辑: 显然,我还必须在第一次运行 docker 容器后停止它,然后重新开始让它工作
【讨论】:
以上是关于Nginx 寻找文件而不是端点?的主要内容,如果未能解决你的问题,请参考以下文章
如何在子文件夹中为 WordPress REST API 配置 nginx?