nginx配置相关问题

稜镜柯里化
• 阅读 2115

作者:心叶
时间: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;
        }
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
3年前
ASP.NET中Session的sessionState 5种mode模式 (草稿)
有关session链接有关session丢失的解决方案:1、http://m.2cto.com/kf/201702/593964.html2、http://www.blogjava.net/Hopes/articles/38531
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Django组件——cookie与session
Django组件——cookie与session<fontcolor00bff一、会话跟踪技术</font<fontcolorff7f501、什么是会话跟踪技术</font先了解一下什么是会话。可以把
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
当指定了一个 messageid 后,发送或插入消息,即使成功,也查询不到此消息
SDKmessageid仅在发送失败时,可以使用SDK已经构建好的id,不支持自己指定一个自定义的id值。如果传入一个SDK不存在的id会导致消息丢失如果传入一个SDK存在的但不是当前消息的id,会导致原有消息内容发生变更,导致消息错乱。详情查看:http
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(