Nginx,快速路由问题

时间:2021-01-12 16:26:32

标签: express nginx routes ejs reverse-proxy

我有一个在 nginx 反向代理后面运行的应用程序,该应用程序运行良好。 该应用程序是使用 express 构建的,使用 ejs 作为模板引擎。 但是当我把它放在云端并将它设置在代理后面时,问题就发生了。

这是我的 nginx 配置:

CMD

这是我的视图模板 (EJS):


 server{
     listen 80;
     listen [::]:80;
     error_log /var/log/nginx/reverse_proxy_error.log;
     access_log /var/log/nginx/reverse_proxy_access.log;

     # I put this to redirect traffic from / to /preview/app/
     location / {
       return 302 /preview/app/;
     }
     
     location /preview/app/{
          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 https;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_pass http://localhost:3000/;
          access_log /var/log/nginx/app_access.log; 
          error_log /var/log/nginx/app_client_error.log;
     }

}

问题是当我点击锚标签()时,nginx会解决它 类似于 <div class="container d-flex align-items-center justify-content-between"> <h1 class="logo"><a href="/">AppName.</a></h1> <!-- Uncomment below if you prefer to use an image logo --> <!-- <a href="index.html" class="logo"><img src="assets/img/logo.png" alt="" class="img-fluid"></a>--> <nav class="nav-menu d-none d-lg-block"> <ul> <li class="<%= active==='home'?'active':''%>"><a href="/">Home</a></li> <li class="<%= active==='contact'?'active':''%>"><a href="/contact" >Contact</a></li> </ul> </nav><!-- .nav-menu --> </div> ,在我的情况下,我希望它 $host/[PATH_IN_ANCHOR_TAG] 例如,如果我单击联系人锚点,它将解析为 101.x.x.x/contact 而不是 101.x.x.x/preview/app/

我的第一个虽然是双斜线发生在某处,所以我尝试从 我的锚标签,变成:

$host/[MY_APP_PATH]/[PATH_IN_ANCHOR_TAG]

现在它很好地解析到我期望的 url,但现在我必须更改我的应用程序菜单中的所有锚标记,这太多了。 而且,如果我尝试将它直接运行到外部(没有 nginx),则 url 也会中断。 所以我决定更好地设置 nginx 本身

我的配置有什么问题吗?

重要说明

  • 在 /etc/nginx 设置中只保留了默认的 nginx.conf
  • 可用站点上的所有文件都已链接到启用站点

0 个答案:

没有答案