Nginx如何为后端服务访问的静态资源文件添加URL前缀?

问题描述 投票:0回答:1

我使用Nginx作为反向代理来代理不同的网站,但不幸的是,我没有多个域名。因此,我想到了使用不同的URL来区分不同的网站。然而,我遇到了一个问题。下面是我的 Nginx 配置。此配置的目的是将所有以 domain.com/gogs/ 开头的请求代理到本地计算机上的端口 6023。 (显然,我正在端口 6023 上运行一个名为 gogs 的项目,该项目与 GitLab 类似,但这不是我要讨论的内容)。通过这样的配置,当我访问domain.com/gogs/时,系统正确重定向到后端服务,但是所有静态js、css等请求都会导致404,如何解决这个问题?

server {
    listen 443 ;
    server_name domain.com;
    ssl on ;
    ssl_certificate /data/certs/xxxxxxxxx.pem;  # SSL cert
    ssl_certificate_key /data/certs/xxxxxxxxx.key;  # key
    location /gogs/ {
        proxy_pass http://127.0.0.1:6023/;
        rewrite ^/gogs/(.*)$ /$1 break;
        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;
        proxy_buffering off;
        proxy_redirect default;
        proxy_redirect ~^/(.*)$ /gogs/$1;
        
    }
}
  server {
      listen 80;
      server_name domain.com;
      return 301 https://$host$request_uri;
    }

这里是我遇到404错误的资源,可以看到,大部分都是静态资源。 enter image description here 这是我的 gogs 服务的 docker compose 文件,可能会有点帮助。

version: "3"
services:
  gogs:
    restart: always    # 自动重启
    image: gogs/gogs
    container_name: gogs
    ports:
      - '6022:22'      # ssh 端口
      - '6023:3000'    # Web 访问端口
    volumes:
      - ./gogs-data:/data   # 数据存储

我的需求比较简单,希望所有来自 /gogs/ 前缀的请求都会访问对应的后端服务,包括与该服务相关的静态资源请求。

nginx nginx-reverse-proxy staticresource gogs
1个回答
0
投票

这个问题你解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.