基于vue和apache反向代理获取相同的基本url

yiytaume  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(295)

我有一个vue应用程序,我正在使用pm2和apache进行测试。一旦pm2启动了应用程序并且该应用程序在端口3000上运行,我就使用apache反向代理来使用域和https。但是,当我需要使用基本url时,我希望在中获得相同的基本url。
目前,我得到的基本url如下

var base_url = window.location.origin;

在vue应用程序中使用时,此选项始终返回 localhost:3000 但由于url已被代理更改,因此返回的新url应为 mydomain.com 我如何检测应用程序正在使用代理处理请求,并在vue中返回正确的基本url?
我的apacheconf

<VirtualHost *:80>

ServerAdmin info@mydomain.com

ServerName mydomain.com

ServerAlias www.mydomain.com

DocumentRoot /var/www/html

ProxyRequests Off

ProxyPreserveHost On

ProxyVia Full

<Proxy *>

Require all granted

</Proxy>

ProxyPass / http://localhost:3000/

ProxyPassReverse / http://localhost:3000/

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on

RewriteCond %{SERVER_NAME} =mydomain.com [OR]

RewriteCond %{SERVER_NAME} =www.mydomain.com

RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>
ncgqoxb0

ncgqoxb01#

您需要告诉nginx将url向下传递到您的vue应用程序。你需要使用这样的东西( nginx.conf ):

location / {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  proxy_set_header Host $http_host;
  proxy_set_header X-NginX-Proxy true;

  proxy_pass http://localhost:3000;
}

这些是使其工作所需的一些标题。
或者,如果您使用的是apache,则可以添加此指令 ProxyPreserveHost On 它会起作用的。

相关问题