nginx 反向代理Apache

2014年1月13日 18:15:25nginx

同一個域名下,不一樣uri走不一樣的應用(不一樣的web根目錄)web

實現方式:apache

Apache分別監聽兩個端口,對應不一樣的應用windows

nginx監聽80端口,利用location指令根據匹配目錄的不一樣將請求轉發到不一樣的端口瀏覽器

nginx和Apache都在同一臺windows上緩存

nginx下載windows版本,解壓->簡單配置下->保證能啓動nginx服務器

命令行啓動時要注意:要進入到解壓文件內去執行nginx.exe不能簡單的寫到環境變量了事app

下邊是個人主配置文件(這些配置足夠啓動nginx了):tcp

nginx.confspa

 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重啓後瀏覽器裏訪問試試

相關文章
相關標籤/搜索