如何在Nginx反向代理服务器中便捷访问所有子文件夹与文件?
问题原因
你当前遇到的JS加载失败、需要单独配置每个子路径的问题,根源是现有Nginx配置仅硬编码匹配了子路径的首页请求,页面内的JS、CSS等静态资源请求没有对应匹配规则,导致资源404无法加载。
方案1(推荐):Nginx直接托管静态资源
静态资源直接由Nginx处理,不需要经过Node服务,性能更高,也无需为每个子路径单独配置:
server { listen 80; listen 443 ssl; server_name arenu.com.br; # 替换为你服务器上public文件夹的实际绝对路径 root /your/actual/path/public; index index.html index.htm; # ssl证书配置根据你的实际情况补充即可 # ssl_certificate xxx.pem; # ssl_certificate_key xxx.key; location / { # 自动匹配路径对应的文件/文件夹首页,不存在则返回404 try_files $uri $uri/ =404; } # 若有需要走Node服务的动态接口,可单独添加规则匹配接口路径,示例如下: # location /api/ { # proxy_pass http://localhost:8080; # proxy_set_header Host $host; # proxy_set_header X-Real-IP $remote_addr; # } }
配置完成后重载Nginx即可,public文件夹下所有子目录的资源都可正常访问,路径规则和直接访问Node 8080端口完全一致。
方案2:保留反向代理,统一转发所有请求
如果你需要所有请求都走Node服务处理,只需修改Nginx配置全局转发即可,无需单独配置每个子路径:
server { listen 80; listen 443 ssl; server_name arenu.com.br; # ssl证书配置根据你的实际情况补充即可 # ssl_certificate xxx.pem; # ssl_certificate_key xxx.key; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
该配置会将所有域名请求原封不动转发给8080端口的Node服务,由Express的express.static中间件自动处理静态资源匹配,无需新增额外子路径配置。
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

