这里我们要说的是 apache 也具有和 nginx 一样代理其他端口的功能,考虑这个问题是因为许多个人小型服务器上要弄很多的程序和网站,有时候 apache 占用了 80 端口,其他程序就只能用别的端口了,而用域名想访问其他程序就比较困难,nginx 上会有很方便的这些功能。这里我们将一下 apache 也有此神奇之处。
我们举个例子了:比如服务器上安装了 apache 作为 web 代理 80 端口,然后有个其他程序比如 tomcat 使用 81 端口,apache 的配置文件 httpd.conf 中要确保开启了端口代理的功能,像下面这一堆,一般默认是开启的,
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
然后可以针对 tomcat 单独建一个配置文件,放在 vhost 文件夹下面,比如 tomcat.conf,内容如下
##“www.xxx.com”## <VirtualHost *:80> DocumentRoot /data/www/xxx ServerName xxx.com ServerAlias www.xxx.com ProxyPass / http://localhost:81/ ProxyPassReverse / http://localhost:81/ ErrorLog "| /usr/local/apache/bin/rotatelogs /data/www/log/%Y_%m_%d_www.uimoe.com-error.log 86400 480" CustomLog "| /usr/local/apache/bin/rotatelogs /data/www/log/%Y_%m_%d_www.uimoe.com-access.log 86400 480" common </VirtualHost>
这样我们访问 www.xxx.com 的时候会经过 apache 然后再到 tomcat 程序。这样就完成了端口代理。