Nginx 寻找文件而不是端点?

Posted

技术标签:

【中文标题】Nginx 寻找文件而不是端点?【英文标题】:Nginx looking for file rather than endpoint? 【发布时间】:2022-01-18 16:34:29 【问题描述】:

我使用以下 nginx 配置文件设置了 nginx 和 docker-compose,这里 apikibana 是分别在端口 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 寻找文件而不是端点?的主要内容,如果未能解决你的问题,请参考以下文章

nodemon 在 C 盘而不是项目目录中寻找文件。

服务器nginx配置显示文件而不是下载

如何在子文件夹中为 WordPress REST API 配置 nginx?

XAMPP 正在寻找 htdocs 而不是域文件夹中的图像

nginx + fpm 规则问题;找不到文件或脚本被下载而不是被执行

Nginx php文件正在下载而不是执行