WorePress与Intraweb共处一机

WordPress是主流的内容管理系统(CMS),网上大部分博客和中小型企业官网由WordPress搭建,它依赖Apache和Nginx等Web服务器;Intraweb是独立服务(Standalone),自带 HTTP(S) 服务器,可独立运行。用WordPress开发的网站与用Intraweb开发的网站,是否可以发布在同一台服务器上?以及各自启用https协议呢?答案是肯定的,下面详解配置方法。

接下来的例子中,www.jh1999.cn 是用WordPress开发的网站,zupu.jh1999.cn 是用Intraweb开发的网站,发布在同一台服务器上。

一台服务器上要发布多个网站时,需要启用虚拟主机。常规情况下,www.jh1999.cn作为一个虚拟主机,用所在目录来辨识,端口一般是http(80)和https(443),服务器监听这两个端口即可。zupu.jh1999.cn是独立服务器,它作为一个虚拟主机,不能用所在目录来识别,只能绑定不同的端口来识别,这是最关键的区别。本例中绑定的端口是http(8007)和https(8008),绑定的IP地址是0.0.0.0,原因可以另开一篇文章来解说。

本文的重点是WordPress与Intraweb共处一机并启用SSL,前期工作要确保 http://www.jh1999.cn 和 http://zupu.jh1999.cn:8007 能正常访问。

接下来修改配置文件【httpd.conf】,Apache里可用的模块无穷多,启用的越多,系统就越慢,增加启用下面四个模块即可。

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

它们的作用分别是:

  • 启用 URL 重写(Rewrite)功能。
  • 启用 HTTPS / SSL/TLS 加密支持
  • 启用通用代理功能(基础模块)
  • 启用 HTTP/HTTPS 反向代理功能。

第二步配置四个虚拟主机【httpd-vhosts.conf】

#jh1999
<VirtualHost *:80>
    ServerAdmin sandal@jh1999.cn
    DocumentRoot "D:/jh1999cn"
    ServerName www.jh1999.cn
    ErrorLog "D:/logs/error_ss.log"
    CustomLog "D:/logs/access_ss.log" common
</VirtualHost>

这是 http://www.jh1999.cn 网站的配置,只需要指定网站根目录所在的物理目录,以及日志存放目录。

#jh1999-ssl
<VirtualHost *:443>
    ServerAdmin sandal@jh1999.cn
    DocumentRoot "D:\jh1999cn"
    ServerName www.jh1999.cn
    ErrorLog "D:/logs/error.log"
    TransferLog "D:/logs/access.log"
    SSLEngine on
    SSLCertificateFile "${SRVROOT}/conf/www.jh1999.cn-chain.pem"
    SSLCertificateKeyFile "${SRVROOT}/conf/www.jh1999.cn-key.pem"
</VirtualHost>

这是 https://www.jh1999.cn 网站的配置,监听端口是默认的443,指定根目录位置,日志存放位置,打开SSL开关,并指定SSL证书的位置。

#jhZupu-IW
<VirtualHost *:80>
    ServerAdmin sandal@jh1999.cn
    ServerName zupu.jh1999.cn
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8007/
    ProxyPassReverse / http://127.0.0.1:8007/
</VirtualHost>

这是 http://zupu.jh1999.cn 网站的配置,它的监听端口也是默认的80,而不是8007,相比www.jh1999.cn网站,它打开了反向代理(ProxyPreserveHost)开关,并指明了将用户发来的请求转发给后端服务器的地址和端口,并且修改后端服务器返回的 HTTP 响应头中的 URL,使其对用户透明。ProxyPass和ProxyPassReverse总是成对出现。

#jhZupu-IW-ssl
<VirtualHost *:443>
    ServerAdmin sandal@jh1999.cn
    ServerName zupu.jh1999.cn
    SSLEngine on
    SSLCertificateFile "D:/jhZupu/cert.pem"
    SSLCertificateKeyFile "D:/jhZupu/key.pem"
    ProxyPreserveHost On
    SSLProxyEngine On
    ProxyPass / https://127.0.0.1:8008/
    ProxyPassReverse / https://127.0.0.1:8008/
</VirtualHost>

这是 https://zupu.jh1999.cn 网站的配置,它的SSL监听端口是默认的443,而不是Intraweb绑定的8008,相比 https://www.jh1999.cn网站,它增加了 ProxyPreserveHost 和 SSLProxyEngine 两个开关的开放,意思是:让后端服务器看到原始的 Host 请求头,而不是代理服务器的地址,以及启用 Apache 作为 HTTPS 客户端,去连接后端的 HTTPS 服务。再指明将用户发来的https请求转发给后端服务器的地址和端口,同样的,ProxyPass和ProxyPassReverse总是成对出现。

通过上述方案,在同一台服务器上,四个协议和架构完全不同的网站,和谐地相处一机,传统的通过DNS做域名别名解析和自动跳转解析,都不需要了,而且网址显示的更加干净和专业。

发表评论