码迷,mamicode.com
首页 > 其他好文 > 详细

nginx proxy_pass配置及关于setcookie的一点说明

时间:2015-02-02 00:46:29      阅读:1818      评论:0      收藏:0      [点我收藏+]

标签:

作者:zhanhailiang 日期:2015-02-01

nginx proxy_pass配置透传hd域的动态请求到wapi域下:

server {
    listen       80;
    server_name  hd.coalaawork.com;

    access_log  logs/hd.coalaawork.com.access.log;

    root    /usr/local/wwwroot/coalaawork/hd;

    location / {
        index   index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location ~* ^.+/.(js|css|gif|png|jpg|bmp|jpeg|htm|xml|swf|json|ico)$ {
        expires off;
        break;
    }

    location /cgi/ {
        proxy_pass http://wapi.coalaawork.com/;
        proxy_set_header  X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

server {
    listen       80;
    server_name  wapi.coalaawork.com;

    access_log  logs/wapi.coalaawork.com.access.log;

    root    /usr/local/wwwroot/coalaawork/wapi;

    location / {
        index   index.html index.htm index.php;
    }

    if (!-f $request_filename) {
        rewrite ^/(.*)$ /index.php?s=$1 last;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location ~* ^.+/.(js|css|gif|png|jpg|bmp|jpeg|htm|xml|swf|json|ico)$ {
        expires off;
        break;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

说明:

  1. 以上配置将匹配hd域下的/cgi/请求,转发到wapi域。注意proxy_pass http://wapi.coalaawork.com/最后的request_uri为/,详细测试用例请见nginx proxy_pass末尾神奇的/

  2. 转到时需要带上客户端的IP地址,需要配置:

    proxy_set_header  X-Real-IP        $remote_addr;
    proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
  3. 使用nginx -t发现“host not found in upstream "wapi.coalaawork.com"”,需要在/etc/hosts添加“127.0.0.1 wapi.coalaawork.com”:

    [root@/usr/local/nginx/conf/vhosts]# /usr/local/nginx/sbin/nginx -t
    nginx: [emerg] host not found in upstream "wapi.coalaawork.com" in /usr/local/nginx/conf/vhosts/coalaawork.com:24
    configuration file /usr/local/tengine-2.0.3/conf/nginx.conf test failed

测试如下:

[root@/usr/local/wwwroot/coalaawork]# find .
.
./wapi
./wapi/index.php
./hd
[root@/usr/local/wwwroot/coalaawork]# cat ./wapi/index.php 
<?php

echo json_encode($_SERVER);

技术分享

setcookie设置$domain参数的三种区别

测试脚本如下:

[root@/usr/local/wwwroot/coalaawork/wapi]# cat index.php 
<?php

setcookie(test1, 1, 0);
setcookie(test2, 2, 0, wapi.coalaawork.com);
setcookie(test3, 3, 0, hd.coalaawork.com);
echo json_encode($_SERVER);

测试结果如下:

技术分享

技术分享

测试结果表明使用setcookie设置cookie时:
1. 默认不设置domain参数时,Set-Cookie时浏览器会在当前域下种下cookie;
2. 当设置domain参数时,Set-Cookie时浏览器在所有的domain子域名下都会带上该cookie(请见php setcookie函数domain参数说明);
3. Set-Cookie不允许跨域;

nginx proxy_pass配置及关于setcookie的一点说明

标签:

原文地址:http://blog.csdn.net/billfeller/article/details/43381813

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!