简单配置Apache服务器代理Proxy

因为只有一台服务器,但最近安装了wiki.js以及filebrowser作为站点得扩充,同时想根据不同的域名来访问不同功能的站点,即通过域名访问特定端口。前后查了一些资料,发现可以通过apache2代理机制来实现。

关于VirtualHost标签

 

Virtualhost本身是一种apache2本身的工作机制,个人理解上是对服务器进行虚拟化,虚拟出多台主机进行服务,可以同时监听不同的端口,访问不同的站点。根据apache2官网给出的定义:


虚拟主机
指的是在单一机器上运行多个网站 (例如 company1.example.comcompany2.example.com) 。 虚拟主机可以“基于 IP”,即每个 IP 一个站点; 或者“基于名称”, 即每个 IP 多个站点。这些站点运行在同一物理服务器上的事实不会明显的透漏给最终用户。
Apache 是第一个支持基于 IP 的虚拟主机的服务器。 Apache 版本 1.1 和更新的版本同时支持基于 IP 和基于名称的虚拟主机。 基于名称的虚拟主机有时候称为基于主机非 IP 的虚拟主机.
以下解释是在 Apache 中支持虚拟主机的所有详细信息的文档页面列表。

 

配置VirtualHost

相关配置文件位置:

/etc/apache2/sites-enabled/000-default.conf

执行如下命令:

sudo vim /etc/apache2/sites-enabled/000-default.conf

添加标签格式如下:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName wiki.yangsx.club
ServerAlias wiki.yangsx.club
ProxyPass / http://www.baidu.com:56789/
ProxyPassReverse / http://www.baidu.com/
</VirtualHost>

VirtualHost各个属性的意义

  1. “*:80″代表监听的端口与IP。这样的写法表示接受所有ip地址访问自己的服务器正在监听80端口。
  2. “ServerAdmin webmaster@localhost”代表着当前VirtualHost的管理用户,(此项可以不填)
  3. DocumentRoot /var/www/html代表该VirtualHost的根目录
  4. ServerName 此项为用户输入的域名,对应了基于域名的虚拟主机
  5. ServerAlias 为网站别名。(可以不设置该属性)
  6. ProxyPass 为你要代理到的目标服务器
  7. ProxyPassReverse  为你要返回给用户的地址,即用户在浏览器地址栏看到的地址

应用实例

假设我现在想通过www.baidu.com这个域名访问服务器开在端口56789的这个服务。那么需要在配置文件中添加如下内容:

<VirtualHost *:80>
ServerName www.baidu.com
ProxyPass / http://www.baidu.com:56789/
ProxyPassReverse / http://www.baidu.com/
</VirtualHost>
更多的用法可以查询Apache2官方文档

简单配置Apache服务器代理Proxy》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注