nginx配置相关问题

作者:心叶
时间:2018-04-30 15:32

session丢失问题

发生情况

转发的时候,如果只是host、端口转换,则session不会丢失,如果路径也变化了,则需要设置cookie的路径转换,不然session会发生丢失。

解决方案

通过设置cookie的路径转换就可以解决了,具体例子如下:

location /pre-url/ {
    proxy_pass http://serverProxy/new-url;
    proxy_cookie_path  /new-url /pre-url;
}

由pre-url转发到new-url的时候这样设置就可以了。

配置文件说明

#定义Nginx运行的用户和用户组
#user  nobody;

#nginx进程数,建议设置为等于CPU总核心数。
worker_processes  1;

#全局错误日志
error_log   /Users/yelloxing/nginxConfig/error_debug.log  debug;
error_log   /Users/yelloxing/nginxConfig/error_notice.log  notice;
error_log   /Users/yelloxing/nginxConfig/error_info.log  info;
error_log   /Users/yelloxing/nginxConfig/error_warn.log  warn;
error_log   /Users/yelloxing/nginxConfig/error_error.log  error;
error_log   /Users/yelloxing/nginxConfig/error_crit.log  crit;

#进程文件
pid       /Users/yelloxing/nginxConfig/nginx.pid;

events {
    #单个进程最大连接数(最大连接数=连接数*进程数)
    worker_connections  256;
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {

    #文件扩展名与文件类型映射表
    include      /Users/yelloxing/nginxConfig/mime.types;

    #默认文件类型
    default_type  application/octet-stream;

    #默认编码
    #charset utf-8;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '"$request_body" $body_bytes_sent $status ';

    #sendfile指令指定 nginx 是否调用sendfile 函数来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
    sendfile        on;

    #长连接超时时间,单位是秒
    keepalive_timeout  65;

    #预定义的第一个请求数据的地址
    upstream localJsonProxy {
        server 127.0.0.1:30000;
    }

    #负载均衡配置简单例子
    #upstream serverName {
    #    server 192.168.0.14 weight=10;
    #    server 192.168.0.15 weight=10;
    #}

    #预定义的第二个请求数据的地址
    upstream serverProxy {
        server 192.168.0.16:20000;
    }

    #虚拟主机的配置
    server {

        #监听端口
        listen       8080;
        #域名可以有多个,用空格隔开
        server_name  localhost;
        access_log  /Users/yelloxing/nginxConfig/host.access.log main;

        #---1
        location / {
            root  /Users/yelloxing/-------/source/;
            index  index.html;
        }

        #---2
        location /server/ {
            proxy_pass http://serverProxy/server/;
            proxy_redirect          off;
        }

        #---3
        location /local/ {
            rewrite ^(.*).do$ $1.json last;
            proxy_pass http://localJsonProxy/;
            proxy_redirect          off;
        }
    }

    #虚拟主机的配置(这里是对应上面的『预定义的第一个请求数据的地址』)
    server {
        listen       30000;
        server_name  dataServer;
        access_log  /Users/yelloxing/nginxConfig/data.access.log main;

        location ~ (.*\.json) {
            root   /Users/yelloxing/-------/source/data;
            default_type application/json;
            error_page 405 =200 $1;
        }
    }
}
    原文作者:心叶
    原文地址: https://segmentfault.com/a/1190000014671929
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞