繁体   English   中英

Nginx反向代理而不是目录列表

[英]Nginx reverse proxy instead of directory listing

我试图让Nginx提供静态内容,同时将其他所有内容反向代理到Rails服务器。

除主页外,所有方法均有效。 如果我转到example.com,则会收到403错误,并显示错误日志

2019/06/14 04:32:59 [error] 9746#9746: *1 directory index of "/var/www/html/" is forbidden

我希望将请求作为example.com/发送到Rails服务器,而不是尝试(失败)以获取目录列表。 Rails服务器应该显示一个主页。 (旁注:如果我打开自动索引功能,我会得到一个目录清单)

配置在这里:

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        server_name example.com;
        index index.html;
        location / {
            autoindex off;
            root /var/www/html;
            try_files $uri $uri/ @rails;
            expires max;
            access_log off;
        }
        location @rails {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:3000;
        }

}

解决该首页问题的方法是为该首页添加确切的location ,如下所示:

    location = / {
        try_files @rails =404;
    }

如果要禁用所有URI的index行为,请从try_files语句中删除$uri/术语。 例如:

location / {
    try_files $uri @rails;
    ...
}

有关详细信息,请参见此文档


或者,添加一个新的位置块来专门处理URI / ,例如:

location = / { 
    try_files nonexistant @rails; 
}

有关详细信息,请参见此文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM