Author: admin | Category: Apache, Nginx
Comments: 评论关闭

一个典型的 Nginx + Apache 应用方案可以是

Nginx 占用 80 端口,过滤静态请求,然后动态请求即 Proxy 到 Apache 的 8080 端口。
Proxy 反向代理的好处是访问的时候,始终就是 80 端口,来访者不会觉察到有任何的区别。

但有的应用确非常“聪明”,识别到 Apache 所位于的端口是 8080 ,就会把相关的超链接都一并加上 :8080 的后续。这么就死定了,还能有正常访问麽?!

有个方法可以解决这事,就是把 apache 也运行在80端口上。
同一台服务器,有Nginx 也有 Apache,2个httpd服务,都是80,不会冲突麽?

下边就是举例方法。

Nginx.conf 的配置中

server {

listen 80;
server_name www.ABC.com;

}

修改一下。

server {

listen 192.168.3.3:80;       #指定Nginx只占用某个IP的80端口。
listen 192.168.10.3:80;           #如果你服务器中有多个IP,还可以指定多个。
server_name www.ABC.com;

}

如果你在Nginx有多个虚拟主机,每一个都需要这么修改。

然后轮到 apache 的 httpd.conf

把原来的

Listen 80

改为

Listen 127.0.0.1:80

跟Nginx一样,指定apache所占用的IP及端口。
保存退出,重启apache即可生效。
如果你 apache 上也有多个虚拟主机。无需好像Nginx那样逐一修改,只要都是 80 端口既可。

如:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin hello@abc.com
    DocumentRoot /data/web_server/admin
    ServerName www.ABC.com
</VirtualHost>

这样,Nginx 跟 Apache 就仅会占用指定IP的80端口,不会冲突。
只要调整一下 Nginx proxy 的参数。
“聪明”应用问题就能解决了。

Author: admin | Category: Apache, Java
Comments: 评论关闭

关于有虚拟主机 Apache + JK +( tomcat1 / tomcat 2) 这么一个架构的配置方式

之前发过在回帖中,发现的人不多,现在开主题发。

步骤不多,也把各个配置的细节,用途都写出来了,新手们认真看。

首先配的是 httpd.conf 的虚拟主机配置

如下:httpd.conf 找到 #NameVirtualHost 去掉前边的 # 然后配置如下

NameVirtualHost *:80

#########################################

<VirtualHost *:80>
    ServerAdmin xxx@xxx.com
    DocumentRoot “/opt/webroot”
    ServerName localhost
    #ErrorLog logs/error.log
    JkMountFile conf/localhost.properties
</VirtualHost>

#########################################

<VirtualHost *:80>
    ServerAdmin xxx@xxx.com
    DocumentRoot “/opt/web1″
    ServerAlias www.web1.com
    #ErrorLog logs/error.log
    JkMountFile conf/web1.properties   #加载mod_jk配置路径
</VirtualHost>

#########################################

<VirtualHost *:80>
    ServerAdmin xxx@xxx.com
    DocumentRoot “/opt/web2″
    ServerAlias www.web2.com
    #ErrorLog logs/error.log
    JkMountFile conf/web2.properties  #加载mod_jk配置路径
</VirtualHost>

##################################

以上配置的前提是你已经顺利编译安装好 mod_jk 模块

然后修改 mod_jk 的全局配置 httpd-jk.conf

vim conf/extra/httpd-jk.conf

LoadModule      jk_module       modules/mod_jk.so

JkWorkersFile   conf/workers.properties   #指定各个配置文件路径
JkMountFile     conf/urimap.properties
JkLogFile       logs/mod_jk.log
JkLogLevel      warn

<Location /jkstatus>    #管理页面
    JkMount status
</Location>
:wq 保存退出

#########################

然后创建各自的 web1.properties ,web2.properties 配置文件,目录路径跟 httpd.conf 相同

# vim conf/web1.properties

/*=tomcat_web1 

!/*.gif=web1 
!/*.jpg=web1
!/*.png=web1
!/*.html=web1
!/*.htm=web1

#第一行的意思是把请求转往代号为 tomcat_web1(命名可与虚拟主机无关) 的 tomcat 端, 一会我们需要在 workers.properties 配置中设置。
#而剩下的是不需要转往 tomcat 的请求类型, 因为 tomcat 处理静态文件性能很差, 所以这里的规则就是过滤,把静态文件处理留给apache。
:wq 保存退出

web2.properties 的配置方式跟 web1 相同。

#################################

 编辑 jk 全局配置

# Vim workers.properties

worker.list=tomcat_web1,tomcat_web2,status     #告诉 jk 你需要他统管的 tomcat 名(代号) 最后一个”status” 是jk 的管理页面

worker.status.type=status  #为 status 路径设置属性为管理页面。

############# 先配置好每个 tomcat 与 JK 的链接参数 ################
worker.s1.type=ajp13    #协议类型
worker.s1.host=127.0.0.1 #tomcat所在服务器的ip,如果是本机就是 127.0.0.1
worker.s1.port=8108 #tomcat的端口
worker.s1.lbfactor=1 #如果是均衡负载状态,多个tomcat的负载比例。

worker.s2.type=ajp13
worker.s2.host=127.0.0.1
worker.s2.port=8109
worker.s2.lbfactor=1

############## 再配置 tomcat 与 jk 的调度 ###############

worker.tomcat_web1.type=lb    #lb 的意思是可集成多个tomcat均衡负载,但只有一个tomcat 的时候也可以使用。
worker.tomcat_web1.balance_workers=s1  #开头的”worker.tomcat_web1″对应web1.properties的配置。这里配置群组的tomcat成员。”s1″ 是成员代号。对应上边tomcat的链接参数。
worker.tomcat_web1.sticky_session=True #是否打开session 粘贴。

worker.tomcat_web2.type=lb #意义同上
worker.tomcat_web2.balance_workers=s2
worker.tomcat_web2.sticky_session=True

:wq 配置完成后保存退出

 ###########################

配置路径名:

编辑或创建 urimap.properties

# vim urimap.properties

/*=lb         # 把请求发往 lb
/jkstatus=status  # 把JK管理页面的连接定为 http://www.web1.com/jkstatus 或者 http://www.web2.com/jkstatus 

:wq 保存退出

你也可以修改或创建相同目录里localhost.properties 把 管理页面链接加到里边。这么链接地址就为 http://localhost/jkstatus
#####################

然后就剩下 tomcat 了

修改端口号对应tomcat 组这个不用说了吧?

最重要说的是既然在各自的 web1.properties 跟 workers.properties中配置了 tomcat 名, 这么除了告诉jk tomcat的IP地址以及端口号, 还必须告诉 tomcat 他的名字。

Engine jvmRoute=”tomcat_web1″

分别在 tomcat1 跟 tomcat2 的  server.xml 中找到相应的配置. 改上相应的参数!

到此,即完成整个 Apache + JK + tomcat 的配置过程。

Top
RSS for entries