代理将应用程序从另一台机器传递到 Apache Web 服务器

Proxy pass an application from a different machine to an apache web server

I have three applications running, 2 on local machine/server where Apache is installed and 1 on a different machine/server. I am using Apache2.4 on Ubuntu 18.04

application 1(yii) = 127.0.0.1:80 
application 2(mantis bt) = 127.0.0.1:8080
application 3(yii) = 192.168.X.X:80

我想配置我的 apache 网络服务器以在 https 上托管这三个应用程序。我代理通过 app2 和 app3。

app2 = /app2 http://127.0.0.1:8080
app3 = /app3 http://192.168.X.X

app1可以访问成功,没有报错, app2和app3可以访问但是找不到.css,.js等文件报错404.

注意:我可以在不使用代理通行证时访问所有三个应用程序。

也可以托管这三个应用程序并拥有如下 url:
https://app1.example https://app2.example https://app2.example

我是 Apache 的新手。请帮我。

请检查下面我的配置: 文档根 /var/www/html/app1 错误日志 /var/log/httpd/app1_log 日志级别调试

<Directory /var/www/html/app1>
AllowOverride none
Order allow,deny
Allow from all
RewriteCond %{ENV:REDIRECT_STATUS} ^$
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
</Directory>

ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On

<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>

<Location /app2>
    ProxyPass http://127.0.0.1:8080/login_page.php
    ProxyPassReverse http://1127.0.0.1:8080/login_page.php
    SetEnv              proxy-sendchunks 1
</Location>

<Location /app3>
    ProxyPass http://192.168.X.X/
    ProxyPassReverse http://192.168.X.X/
    SetEnv              proxy-sendchunks 1
</Location>

<Location /static/>
   ProxyPass !
</Location>
</VirtualHost>
<VirtualHost *:443>
  SSL Configuration
</VirtualHost> 

将 apache 虚拟主机配置为以下配置

For app2

<Virtualhost *:80>
     ServerName app2.domain.com
     ServerAdmin youremail@email.com

     ProxyPass http://127.0.0.1:8080/
     ProxyPassReverse http://127.0.0.1:8080/
</Virtualhost *:80>

For app3

<Virtualhost *:80>
     ServerName app3.domain.com
     ServerAdmin youremail@email.com

     ProxyPass http://192.168.X.X/
     ProxyPassReverse http://192.168.X.X/
</Virtualhost *:80>

为两个域创建一个单独的虚拟主机。

创建虚拟主机后重启apache

service apache2 restart

它对我有用,我希望它对你有用并加载 .css、.js 和其他文件。

If you want to redirect aap3 to https, then your final virtual host file will be like below configuration:

<Virtualhost *:80>
     ServerName app2.domain.com
     ServerAdmin youremail@email.com

     ProxyPass http://127.0.0.1:8080/
     ProxyPassReverse http://127.0.0.1:8080/
</Virtualhost *:80>

<Virtualhost *:80>
     ServerName app3.domain.com
     Redirect / https://app3.domain.com/
</Virtualhost *:80>

<IfModule mod_ssl.c>
<VirtualHost *:443>
     ServerName app3.domain.com
     ServerAdmin youremail@email.com

     ProxyPass http://192.168.X.X/
     ProxyPassReverse http://192.168.X.X/

     Include /etc/letsencrypt/options-ssl-apache.conf
     ServerAlias app3.domain.com
     SSLCertificateFile /etc/letsencrypt/live/app3.domain.com/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/app3.domain.com/privkey.pem
</VirtualHost>
</IfModule>