Nginx + Apache搭建WEB站点

Nginx + Apache搭建WEB站点

经验文章nimo972024-12-14 11:59:0212A+A-

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

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7