2014年1月13日 18:15:25
同一个域名下,不同uri走不同的应用(不同的web根目录)
实现方式:
Apache分别监听两个端口,对应不同的应用
nginx监听80端口,利用location指令根据匹配目录的不同将请求转发到不同的端口
nginx和Apache都在同一台windows上
nginx下载windows版本,解压->简单配置下->保证能启动nginx
命令行启动时要注意:要进入到解压文件内去执行nginx.exe不能简单的写到环境变量了事
下边是我的主配置文件(这些配置足够启动nginx了):
nginx.conf
1 #user nobody;
2 worker_processes 1;
3
4 error_log F:/vc9server/nginx/logs/error.log;
5 error_log F:/vc9server/nginx/logs/error.log notice;
6 error_log F:/vc9server/nginx/logs/error.log info;
7
8 pid F:/vc9server/nginx/logs/nginx.pid;
9
10 events {
11 worker_connections 1024;
12 }
13
14 http {
15 include mime.types;
16 default_type application/octet-stream;
17
18 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
19 '$status $body_bytes_sent "$http_referer" '
20 '"$http_user_agent" "$http_x_forwarded_for"';
21
22 access_log F:/vc9server/nginx/logs/access.log main;
23
24 sendfile on; #跟内核交互用 缓存
25 #tcp_nopush on;
26
27 #keepalive_timeout 0;
28 keepalive_timeout 65;
29
30 server_names_hash_bucket_size 64;
31 include apache.conf; #主要的反向代理配置都写在这个文件里了
32 }
apache.conf
1 ##2014年1月11日
2 #反向代理
3 upstream zend
4 {
5 server 127.0.0.1:8089;
6 }
7
8 upstream yaf
9 {
10 server 127.0.0.1:8088;
11 }
12
13 server
14 {
15 listen 80;
16 server_name www.example1.com;
17
18 location ^~ /abc {
19 proxy_pass http://zend; #转发到上边定义的zend代理中去
20
21 proxy_redirect off;
22 proxy_set_header Host $host;
23 proxy_set_header X-Real-IP $remote_addr;
24 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
25 }
26
27 location /
28 {
29 proxy_pass http://yaf; #转发到上边定义的yaf代理中去
30
31 proxy_redirect off;
32 proxy_set_header Host $host;
33 proxy_set_header X-Real-IP $remote_addr;
34 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
35 proxy_set_header X-Scheme $scheme;
36 }
37 }
38 server
39 {
40 listen 80;
41 server_name www.example2.com;
42
43 location /
44 {
45 proxy_pass http://zend; #转发到zend代理
46
47 proxy_redirect off;
48 proxy_set_header Host $host;
49 proxy_set_header X-Real-IP $remote_addr;
50 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
51 }
52 }
解释:
1.请求 example1 时
URI为/abc开头的转发到上边定义的zend代理,其余的URI请求转到yaf代理
2.请求 example2 时
将所有请求转发到zend代理
3.配置中的proxy_set_header 是将nginx得到的请求信息(头信息等等)复制一份给代理服务器
4.nginx指令要有分号结尾,监听多个域名时,域名间用空格隔开后再以分号结尾
最后
在Apache中监听apache.conf中zend,yaf两个代理指定的域名+端口 或 ip+端口,并作相应的配置
nginx 和 Apache重启后浏览器里访问试试