1、环境
一台Apache软件、一个SpringBoot的jar包web项目(分别用三个端口启动jar包,分别为8081、8082/8083)
2、配置httpd.conf、httpd-vhosts.conf
一、Apache下载安装:
-
Apache 下载:建议从官网下载http://httpd.apache.org/download.cgi
-
安装方法参照http://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html
安装的时候若出现:(OS 5)拒绝访问。 : AH00369: Failed to open the WinNT service manager…。可查看此链接http://blog.csdn.net/u010544319/article/details/8938491。 -
之前在网上找到的配置方法一般是需要安装mod_jk,配置worker.properties的,这种方法是早期的apache的配置方式。现在的2.4.25已经集成了mod_jk,不需要安装mod_jk配置worker.properties了,简单了很多。
-
也可以参考该链接https://blog.csdn.net/mikasoi/article/details/80976425
-
找到Apache2.4安装目录下面的httpd.conf 我的路径是:D:\Apache24\conf,第38行要修改成自己安装的目录 Define SRVROOT “D:\Apache24”,第60行修改端口,因为80的端口容易被占,Listen 8088,第222行也要对应修改,ServerName localhost:8088。
-
打开mod加载的注释,共6个:
第141行 mod_proxy 提供HTTP/1.1的代理/网关功能支持 142行 mod_proxy_ajp mod_proxy的扩展,提供Apache JServ Protocol支持 143行 mod_proxy_balancer mod_proxy的扩展,提供负载均衡支持 144行 mod_proxy_connect mod_proxy的扩展,提供对处理HTTP CONNECT方法的支持 147行 mod_proxy_ftp mod_proxy的FTP支持模块 149行 mod_proxy_http mod_proxy的HTTP支持模块
-
第499行 Include conf/extra/httpd-vhosts.conf,把这行的注释去掉,引入这个配置文件
-
修改httpd-vhosts.conf文件 路径:D:\Apache24\conf\extra
添加如下代码,实现均衡分配 -
httpd-vhosts.conf文件末尾添加如下配置: ProxyRequests Off <Proxy balancer://proxy> BalancerMember http://localhost:8081/ BalancerMember http://localhost:8082/ BalancerMember http://localhost:8083/ ProxySet lbmethod=byrequests </Proxy> <VirtualHost localhost:80> #这个端口号要与httpd.conf的listen端口一致,网上的教程都是不一致的,我的试验是要一致才可以。 ServerAdmin 3002885095@qq.com ServerName localhost ServerAlias localhost ProxyPass / balancer://proxy/ stickysession=JSESSIONID nofailover=off ProxyPassReverse / balancer://proxy ErrorLog "logs/error.log" </VirtualHost>
ds
-
启动apche-
httpd.exe -w -n "apache" -k start
-
启动报错,查看logs/error.log文件,发现问题如下:
The 'apache' service is running. [ssl:info] [pid 8388:tid 692] AH01887: Init: Initializing (virtual) servers for SSL [Fri Aug 02 20:48:39.337018 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server servertwo.tld:443 for SSL protocol [Fri Aug 02 20:48:39.354001 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key servertwo.tld:443:0 configured from F:/Apache/conf/ssl/servertwo.crt and F:/Apache/conf/ssl/servertwo.key [Fri Aug 02 20:48:39.354001 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server serverone.tld:443 for SSL protocol [Fri Aug 02 20:48:39.364943 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key serverone.tld:443:0 configured from F:/Apache/conf/ssl/serverone.crt and F:/Apache/conf/ssl/serverone.key [Fri Aug 02 20:48:39.365941 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server localhost:443 for SSL protocol [Fri Aug 02 20:48:39.366938 2019] [ssl:warn] [pid 8388:tid 692] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name [Fri Aug 02 20:48:39.366938 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key localhost:443:0 configured from F:/Apache/conf/ssl/server.crt and F:/Apache/conf/ssl/server.key [Fri Aug 02 20:48:39.366938 2019] [ssl:info] [pid 8388:tid 692] AH01876: mod_ssl/2.4.39 compiled against Server: Apache/2.4.39, Library: OpenSSL/1.0.2s [Fri Aug 02 20:48:39.514543 2019] [core:warn] [pid 8388:tid 692] AH00098: pid file F:/Apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run? [Fri Aug 02 20:48:39.596346 2019] [socache_shmcb:info] [pid 8388:tid 692] AH00830: Shared memory socache initialised [Fri Aug 02 20:48:39.596346 2019] [ssl:info] [pid 8388:tid 692] AH01887: Init: Initializing (virtual) servers for SSL [Fri Aug 02 20:48:39.596346 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server servertwo.tld:443 for SSL protocol [Fri Aug 02 20:48:39.596346 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key servertwo.tld:443:0 configured from F:/Apache/conf/ssl/servertwo.crt and F:/Apache/conf/ssl/servertwo.key [Fri Aug 02 20:48:39.596346 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server serverone.tld:443 for SSL protocol [Fri Aug 02 20:48:39.597322 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key serverone.tld:443:0 configured from F:/Apache/conf/ssl/serverone.crt and F:/Apache/conf/ssl/serverone.key [Fri Aug 02 20:48:39.597322 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server localhost:443 for SSL protocol [Fri Aug 02 20:48:39.597322 2019] [ssl:warn] [pid 8388:tid 692] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name [Fri Aug 02 20:48:39.597322 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key localhost:443:0 configured from F:/Apache/conf/ssl/server.crt and F:/Apache/conf/ssl/server.key [Fri Aug 02 20:48:39.598320 2019] [ssl:info] [pid 8388:tid 692] AH01876: mod_ssl/2.4.39 compiled against Server: Apache/2.4.39, Library: OpenSSL/1.0.2s [Fri Aug 02 20:48:39.598320 2019] [proxy_balancer:emerg] [pid 8388:tid 692] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded?? [Fri Aug 02 20:48:39.598320 2019] [:emerg] [pid 8388:tid 692] AH00020: Configuration Failed, exiting
找到对应的错误信息,发现mod_slotmem_shm 这个模块没有加载,在httpd.conf中找到该模块,去掉注释
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
再次启动,失败,查看error.log信息
The 'apache' service is running. [ssl:info] [pid 20404:tid 564] AH01887: Init: Initializing (virtual) servers for SSL [Fri Aug 02 20:49:33.614365 2019] [ssl:info] [pid 20404:tid 564] AH01914: Configuring server servertwo.tld:443 for SSL protocol [Fri Aug 02 20:49:33.614365 2019] [ss