nginx 根据网址进行不同反向代理方法

来源:互联网 发布:python元组转化为列表 编辑:程序博客网 时间:2024/06/16 07:05

应用场景,win下面根据不同的网址代理到不同的php.exe

虚拟配置文件

# vhost/baidu.com.confserver {    listen 80;    listen 443 ssl;    server_name local.baidu.com www.baidu.com test.baidu.com;    root d:/website/baidu.com/src/public;    #root d:/website/baidu.com/src;    index index.html index.htm index.php;    ssl on;    ssl_certificate     d:/website/ssl/www.crt;     ssl_certificate_key d:/website/ssl/www.com.key;     ssl_session_cache    shared:SSL:10m;    ssl_session_timeout  10m;    ssl_protocols  SSLv2 SSLv3 TLSv1;    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;    ssl_prefer_server_ciphers   on;    set $pass_to php_pool_pc ;    set $log_upstream 0;    if (!-e $request_filename) {        rewrite  ^/(.*)$  /index.php?_route_=$1  last;        break;    }    if ( $request_uri ~ ^$ ) {        set $pass_to php_pool ;    }    if ( $query_string ~ route=journal2 ) {        set $pass_to php_pool_pc2 ;    }    if ( $query_string ~ route=catalog) {        set $pass_to php_pool_pc3 ;    }    if ( $query_string ~ "route=catalog/product" ) {        set $pass_to php_pool_pc_admin ;    }    if ( $request_uri ~ ^/admin ) {        set $pass_to php_pool_pc_admin ;    }    location ~ \.php$ {        set $log_upstream 1;        add_header X-PASS-TO "$pass_to" ;        fastcgi_pass   $pass_to;        fastcgi_index  index.php;        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;        include        fastcgi_params;    }       access_log logs/pc-upstream.log upstream_log if=$log_upstream;    access_log logs/pc.log main;}

这算是一个特别蛋疼的解决方案,因为 win下面没有php-fpm,自动按需进行启动新进程。如果php特别稀烂的时候,就无法形容了。

  • 新增了 add_header X-PASS-TO 为了方便调试
  • 注意 set $pass_to php_pool_pc; 必须在 rewrite 之前,否则会报错 $pass_to 为空 500。

欢迎交流 coconets@163.com

nginx配置文件

# nginx.conf#user  nobody;worker_processes  2;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';    log_format upstream_log '[$time_local] $remote_addr - $remote_user - $server_name  '                            ' To: $upstream_addr: $request upstream_response_time $upstream_response_time, request_time= $request_time';    #access_log  logs/access.log  main;    server_names_hash_bucket_size 512;    sendfile        on;    #tcp_nopush     on;    #keepalive_timeout  0;    keepalive_timeout  65;    client_max_body_size 120M;    client_body_buffer_size 128k;    gzip  on;    upstream php_pool {                     server 127.0.0.1:9000 weight=1;        server 127.0.0.1:9001 weight=1 backup;    }    upstream php_pool_pc {        server 127.0.0.1:9002 weight=1;        server 127.0.0.1:9003 weight=1;        server 127.0.0.1:9004 weight=1 backup;    }    upstream php_pool_pc2 {        server 127.0.0.1:9005 weight=1;        server 127.0.0.1:9006 weight=2;        server 127.0.0.1:9007 weight=1 backup;    }    upstream php_pool_pc3 {        server 127.0.0.1:9008 weight=1;        server 127.0.0.1:9009 weight=1 backup;        server 127.0.0.1:9010 weight=1 backup;    }       upstream php_pool_pc_admin {        server 127.0.0.1:9011 weight=1;        server 127.0.0.1:9012 weight=1;        server 127.0.0.1:9013 weight=1;        server 127.0.0.1:9014 weight=1 backup;        server 127.0.0.1:9015 weight=1 backup;    }    upstream php_pool_mx {        server 127.0.0.1:9016 weight=1;    }    upstream php_pool_pay{        server 127.0.0.1:9017 weight=1;        server 127.0.0.1:9018 weight=1 backup;        server 127.0.0.1:9019 weight=1 backup;    }    include vhost/*.conf;}
原创粉丝点击