在 Ubuntu 上设置反向代理

在 Ubuntu 上设置反向代理

我在 Amazon ec2 上有两个 Ubuntu 16.04 (LTS) 实例。它们位于同一个虚拟私有云上。我在两个实例上都安装了 LAMP,并希望能够从其中一个实例上的网页调用另一个实例上的网页。使用 CentOS,我只需编辑 /etc/httpd/conf/httpd.conf 并附加以下行

ProxyPass /app1/ http://10.0.1.27/

然后,我重新启动 apache

sudo service httpd restart

我可以在当前服务器的网页上输入以下代码

<li><a href="/app1/Whatever.php">Whatever</a></li>

当我点击 Whatever 按钮时,我的浏览器上就会显示私有 IP 为 10.0.1.27 的服务器上的网页 Whatever.php。

但是,Ubuntu 没有 /etc/httpd/conf/httpd.conf 文件。

我尝试按照概述设置反向代理这里并在 /etc/apache2/sites-available/proxy-host 文件中输入以下内容。

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html/
  ErrorLog ${APACHE_LOG_DIR}/error.log    
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  ProxyPreserveHost On
  # Servers to proxy the connection, or
  # List of application servers Usage
  ProxyPass /app/ http://10.0.1.27:8080/
  ProxyPass / http://10.0.1.110:8080/
  # ProxyPassReverse / http://server-ip-address:8080/
  ServerName localhost
</VirtualHost>

然后我输入

sudo a2ensite proxy-ssl-host.conf

并得到

 ERROR: Site proxy-ssl-host does not exist!

然后我输入

sudo a2ensite /etc/apache2/sites-available/proxy-host

并得到

ERROR: Site /etc/apache2/sites-available/proxy-host does not exist!

然后我输入

 sudo /etc/init.d/apache2 restart

但是,当我点击“Whatever”按钮时,出现了 404 错误

Not Found

The requested URL /app/Dracula.php was not found on this server.

Apache/2.4.18 (Ubuntu) Server at 52.207.143.84 Port 80

答案1

您可能需要仔细检查配置文件的名称和命令中使用的文件名a2ensite是否相同。例如,如果您的配置在 中/etc/apache2/sites-available/my_vhost.conf,则类似这样的命令a2ensite my-vhost.conf将不起作用。

长期以来,为 vhost 配置添加扩展名一直是一种很好的做法.conf。在 Apache 2.2 及更早版本中,这是可选的,但从 Apache 2.4(随 Ubuntu 16.04 一起提供)开始,.conf扩展名是必需的。

启用(或禁用)vhost 后,需要重新加载 Apache。

相关内容