实际情形

域名/站点根目录反向代理至部分运行于特定端口的程序,而其他子目录需保留默认80/433端口访问。
如web.py为运行于8080端口的FastAPI应用,提供index.html及相关API,为根目录展示页面。
而页面中套用的js、css文件单独存放于80端口的./resource文件夹中,需要避免此文件夹被web.py的8080端口反代。

解决方法

在nginx文件中,除location /{}外,额外添加location ^~ /resource/ {},括号内无需添加任何内容。示例:

# 优先匹配子目录,阻止其被代理
location ^~ /resource/ {
    # 无需配置,使用默认80/443端口处理
}
location ^~ /ts3-banner/ {
    include enable-php-74.conf; #启用PHP
}

# 根目录反向代理配置
location / {
    proxy_pass http://127.0.0.1:8080/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    # 其他必要的proxy配置...
}

错误尝试

尝试将/resource文件夹单独反向代理至http://127.0.0.1/resource,会出现错误:

400 Bad Request
Request Header Or Cookie Too Largenginx.
网站根目录反向代理后,特定子目录避免反代的方法

https://bluish.net/archives/2133/

作者

bluish

发布时间

2024-12-24

许可协议

CC BY-SA 4.0

标签: 服务器, 宝塔, nginx

添加新评论