吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1338|回复: 9
收起左侧

[已解决] nginx代{过}{滤}理不生效,不知怎么回事

  [复制链接]
thepoy 发表于 2020-7-27 11:42
本帖最后由 thepoy 于 2020-7-27 16:34 编辑

nginx配置

      server {
                listen  80;
                server_name     localhost;

                location / {
                        root   /usr/share/nginx/html;
                        index  index.html index.htm;
                }

                                location /api/ {
                                    proxy_pass http://172.17.0.1:8080/;

                            proxy_redirect     off;        
                                        proxy_set_header   Host             $host; 
                                        proxy_set_header   X-Real-IP        $remote_addr; 
                                        proxy_set_header   X-Scheme         $scheme;   
                                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                                }
        }

代{过}{滤}理用的是go服务器,能正常访问。

index.html内有js调用api,但nginx报错:

2020/07/27 03:23:30 [error] 21#21: *1 open() "/usr/share/nginx/html/api/blogs" failed (2: No such file or directory), client: ::1, server: localhost, request: "GET /api/blogs HTTP/1.1", host: "localhost"

从日志中看出来,在访问api时并没有使用代{过}{滤}理服务器,仍然访问的root目录。

请问这应该怎么解决?

【已解决】
nginx.conf文件的proxy_pass段每行代码的前面不知道什么时候多了一些空白字符,所以这段代码没有运行,删了空白字符后proxy正常了

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

allen_369228506 发表于 2020-7-27 12:11
"/usr/share/nginx/html/api/blogs" failed (2: No such file or directory)
报错已经很明显了啊,目录/usr/share/nginx/html/api/blogs不存在,手工创建一个试下
plumekanade 发表于 2020-7-27 12:20
Vvvvvoid 发表于 2020-7-27 13:01
本帖最后由 Vvvvvoid 于 2020-7-27 13:03 编辑

[Lua] 纯文本查看 复制代码
    server {
                listen  80;
                server_name     localhost;

                location /api/ {

root /usr/share/nginx/html;

                        proxy_pass [url]http://172.17.0.1:8080/;[/url]

                        proxy_redirect     off; 
                        proxy_set_header   Host             $host; 
                        proxy_set_header   X-Real-IP        $remote_addr; 
                        proxy_set_header   X-Scheme         $scheme;   
                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                }
        }



这么改试试
Higher-Stark 发表于 2020-7-27 15:18
本帖最后由 Higher-Stark 于 2020-7-27 15:19 编辑

建议题主把location /api/ { ... }放到location / { ... }前面,然后再看看。

 楼主| thepoy 发表于 2020-7-27 15:24
allen_369228506 发表于 2020-7-27 12:11
"/usr/share/nginx/html/api/blogs" failed (2: No such file or directory)
报错已经很明显了啊,目录/us ...

感谢你的回复,但是不懂就不要回复了吧,你说呢?
 楼主| thepoy 发表于 2020-7-27 15:25
plumekanade 发表于 2020-7-27 12:20
这个看着像是/api/跑到/的代{过}{滤}理那里去了

/ 并没有代{过}{滤}理,而是直接访问的root目录,之前从来没遇到这种情况
 楼主| thepoy 发表于 2020-7-27 15:56
Higher-Stark 发表于 2020-7-27 15:18

建议题主把location /api/ { ... }放到location / { ... }前面,然后再看看。


没有用,nginx的匹配不分先后,顺序不影响访问结果,放到前面也proxy_pass段也不生效。
allen_369228506 发表于 2020-7-27 16:13
thepoy 发表于 2020-7-27 15:24
感谢你的回复,但是不懂就不要回复了吧,你说呢?

    很抱歉,可能是我没说清楚对你产生了困扰,你的目的我大概清楚了,现在详细解释下吧。
server {
                listen  80;
                server_name     localhost;

                location / {
                        root   /usr/share/nginx/html;
                        index  index.html index.htm;
                }

                location /api/ {

                    1、    proxy_pass http://172.17.0.1:8080/;  //http://172.17.0.1:8080/ 带"/"代表采用相对路径,实际请求代{过}{滤}理服务器路径为http://172.17.0.1:8080/usr/share/nginx/html/api/XXX
                    2、   proxy_pass http://172.17.0.1:8080;   //http://172.17.0.1:8080/ 不带"/"代表采用绝对路径,实际请求代{过}{滤}理服务器路径为http://172.17.0.1:8080/api/XXX


                        proxy_redirect     off;
                        proxy_set_header   Host             $host;
                        proxy_set_header   X-Real-IP        $remote_addr;
                        proxy_set_header   X-Scheme         $scheme;   
                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                }
        }

两种差异已经做了说明,因为我没有环境所以只能回答到这里。
 楼主| thepoy 发表于 2020-7-27 16:38
allen_369228506 发表于 2020-7-27 16:13
很抱歉,可能是我没说清楚对你产生了困扰,你的目的我大概清楚了,现在详细解释下吧。
server {
   ...

感谢回复,问题不在这里,是配置文件里多了一些不显示的非空格和制表的空白字符,导到proxy_pass段代码未运行,删除后正常运行了。
因为我的proxy_pass是rest架构的api,所以不存在什么目录。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 02:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表