Nginx + Apache搭建WEB站点
Nginx已经广泛应用,其优秀性能获得普遍认同,特别在对各类协议的代理和负载均衡的场景下几乎作为web类服务不二之选。 Apache作为老牌WEB服务器则有着丰富的扩展能力,对于CGI的支持异常简便,到目前仍然有很多应用使用Apache作为web服务器。
本文解决如下情形,老的WEB应用仍然在Apache上运行,有PHP,PERL和一些静态页面,新的则计划使用Nginx来代理运行,或静态页面或到Tomcat。如下图:

整体结构图
Apache的配置信息
参考 https://httpd.apache.org/docs/2.4/programs/httpd.html ;执行如下命令可看到编译和配置文件信息。
# apache2 -V
......
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
查看配置文件/etc/apache2/apache2.conf,找出配置监听端口为80、443的地方,并都修改为8080、8443或其他,便于让nginx来接管80、443端口。
可找到相关配置文件(主要是监听端口和vhost的配置)后,备份,然后参考使用vim的如下指令
vim certain_file.conf
:g/80/s/8080/g
:g/443/s//8443/g
:wq
识别出所有的域名信息:
grep rootdns.com *conf
本出是被如下域名,要将www改为nginx的配置下,其余保留到apache
www
wash
shop
healthy
gps
Nginx的配置
在Nginx的conf.d目录下增加五个文件,分别如下:
ls
-rw-rw-r-- 1 ubuntu ubuntu 719 May 15 15:01 gps.abc.com.conf
-rw-rw-r-- 1 ubuntu ubuntu 723 May 15 15:01 healthy.abc.com.conf
-rw-rw-r-- 1 ubuntu ubuntu 720 May 15 15:00 shop.abc.com.conf
-rw-rw-r-- 1 ubuntu ubuntu 720 May 15 14:58 wash.abc.com.conf
-rw-rw-r-- 1 ubuntu ubuntu 2281 May 15 14:58 www.abc.com.conf
-rw-rw-r-- 1 ubuntu ubuntu 891 May 15 14:59 wx.abc.com.conf
vim
server {
listen 80;
listen 443 ssl;
server_name shop.abc.com;
ssl_certificate /etc/httpd/ssl/wash/wash.abc.com.pem;
ssl_certificate_key /etc/httpd/ssl/wash/wash.abc.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
index index.html;
location /{
proxy_pass http://127.0.0.1:8080/;
proxy_redirect default;
proxy_set_header Cookie $http_cookie;
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
然后重启apache
apache2ctrl -k restart
重新加载nginx
nginx -s reload