nginx反向代理转发apache配置 之 cookie去哪儿了?
在公司接手了个微信项目,由于微信环境下访问网站需要使用对外开放的域名,所以有相关问题,都是直接运维同事帮忙处理。
原理是这样:
方案一:
1. 将域名解析指向测试服务器的地址;
2. 开放相关端口访问权限;
方案二:
1. 将域名解析指向内网测试服务器的某一台;(也方便用于测试https证书问题)
2. 由该台服务器转发服务到相应需要的测试服务器;
3. 开发本台测试服务器及转发的测试服务器的端口权限;
最初,我们使用第一种方案,但是每次都要麻烦好几组的同事一起处理,才能搞定,因此启用了方案二。开了一台中转服务器,搭建nginx服务,指向了我们当前测试的一台服务器,其间,遇到的问题。运维同事没时间,交给我们自己来搞。好嘛,遇到问题了。
问题1、无法找到相应项目问题?
因为nginx只负责将请求转发到该台机器的80或其他端口上了,并没有仔细配置,因此无法找到对应的项目。 解决:在apache 中添加相应vhost配置,示例如下:
<VirtualHost *:>
DocumentRoot /www/web/madmin/public_html
#ServerName admin..com
#ServerAlias 10.8.0.1
ServerName 192.168.1.212
ErrorDocument /errpage/.html
ErrorDocument /errpage/.html
ErrorDocument /errpage/.html
#php_admin_value open_basedir /www/web/madmin:/tmp
<IfModule mod_deflate.c>
DeflateCompressionLevel
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE css js html htm gif jpg png bmp php
</IfModule>
</VirtualHost>
<Directory /www/web/mo123/ccww>
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
,这样,服务器就能正常解析项目了。
问题2、转发过来后,客户端ip获取不到了,得到的只是一个代理服务器ip。
因为涉及到转发,所有的东西都是可能丢掉的,在这里,就需要将原始IP转发过来,如下:
upstream apache {
server 127.0.0.1:;
keepalive ;
} upstream k_api {
server 172.17.0.27:;
keepalive ;
} server {
listen ;
server_name admin..com; location /api {
proxy_pass http://k_api;
proxy_set_header Host $host; #域名转发
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr; #IP转发
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout ;
proxy_read_timeout ;
proxy_send_timeout ;
} location / {
proxy_pass http://apache/h5/; #转发到服务器后,加相对目录地址
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout ;
proxy_read_timeout ;
proxy_send_timeout ;
}
}
问题3、使用nginx代理后,一直无法登录,经排查为cookie无法保存?
这个问题困扰了我很久,也找了运维同事请教了很久,始终无法解决。最终,花了很多时间去找资料,自己做了许多尝试,终于发现了。 原来是服务器时间差的问题,nginx服务器的时区设置为 EST,apache服务器的时区设置是 CST,其时区相差8小时。所以cookie无效了。具体原理就是,登录后会在apache所在服务器设置cookie,有效期为1小时内有效,而转到nginx后,时间却往前了8小时,因此服务器(或者是客户认为)会认为该cookie是过期的,因此不会被保存起来了。
解决:更改nginx时区和时间,和apache一致。修改时间时区的命令如下:
#修改时间
date -s :: # 时间改为了 ::
date -s # 日期更改为2017//
date -s ”:: --“ # 时间改为了2017-- :: #修改时区
tzselect #根据提示修改成相应时区
问题4、监听端口问题?
根据需要设置监听相应端口,注意端口不能冲突了!
nginx其实挺好玩的,有很预置变量,不懂的去搜下文档,基本都能解决。 重在实践吧!
nginx反向代理转发apache配置 之 cookie去哪儿了?的更多相关文章
- nginx 反向代理 与 Apache backend的配置联合配置
nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1. 设置域名, 子域名映射到指定服务器ip ...
- Nginx反向代理负载均衡配置
1.反向代理概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求 ...
- 正向代理 forward proxy、反向代理 reverse proxy、透明代理 transparent proxy nginx反向代理原理和配置讲解 防止外部客户机获取内部内容服务器的重定向 URL 缓存命中
[大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器 - Edison Chou - 博客园http://www.cnblogs.com/edisonchou/p/4126742.html 图 ...
- 配置LANMP环境(7)-- 配置nginx反向代理,与配置apache虚拟主机
一.配置nginx反向代理 1.修改配置文件 vim /etc/nginx/nginx.conf 在35行http下添加一下内容: include /data/nginx/vhosts/*.conf; ...
- nginx反向代理原理和配置讲解
最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡.所以搜罗了一些关于反向代理服务器的内容,整理综合. 一 概述 反向代理(Reverse Proxy)方式 ...
- nginx反向代理转发后页面上的js css文件无法加载【原创】
故障现象:nginx做代理转发后,发现页面上的js css文件无法加载,页面样式乱了. 原因:没有配置静态资源 解决js css文件无法加载无法访问的问题 解决办法: 修改配置文件nginx.conf ...
- Linux 下 Nginx 反向代理 负载均衡配置
转载请注明出处:http://blog.csdn.net/smartbetter/article/details/52036350 上一篇分享了 Nginx + JDK + Tomcat + MySQ ...
- 【转】Nginx反向代理转发tomcat
http://blog.csdn.net/mlc1218559742/article/details/53117520 最近刚接触nginx,在网上查阅了相关资料,看到最多的形容nginx的词就是反向 ...
- Linux下nginx反向代理服务器安装与配置实操
1.我们只要实现访问nginx服务器能跳转到不同的服务器即可,我本地测试是这样的, 在nginx服务器里面搭建了2个tomcat,2个tomcat端口分别是8080和8081,当我输入我nginx服务 ...
随机推荐
- XSLT 创建CDATA节点
创建文本结点 (1)直接写入文本: text1 (2)通过<xsl:text>创建文本结点: <xsl:text>text2</xsl:text> (3)通过< ...
- 如何关闭wps热点,如何关闭wpscenter,如何关闭我的wps
用wps已经快十年了,最开始的时候速度快,非常好用,甩office几条街,但最近这几年随着wps胃口越来越大,各种在线功能不断推出,植入广告越来越多,逐渐让人失去欢喜. 通过各种网帖的经验,我把网上流 ...
- 基于PaddlePaddle的语义匹配模型DAM,让聊天机器人实现完美回复 |
来源商业新知网,原标题:让聊天机器人完美回复 | 基于PaddlePaddle的语义匹配模型DAM 语义匹配 语义匹配是NLP的一项重要应用.无论是问答系统.对话系统还是智能客服,都可以认为是问题和回 ...
- javaMail实现收发邮件(二)
JavaMail API常用类 JavaMail API使用javax.mail.Message类来表示一封邮件,Message类是一个抽象类,所以我们需要使用其子类javax.mail.intern ...
- scrapy爬虫框架处理流程简介
1.SPIDERS的yeild将request发送给ENGIN2.ENGINE对request不做任何处理发送给SCHEDULER3.SCHEDULER( url调度器),生成request交给ENG ...
- Mysql——数据库和数据表的基本操作
/*创建数据库--- CREATE DATABASE 数据库名;*/ CREATE DATABASE itschool; /*查看已经存在的数据库*/ SHOW DATABASES; /*查看某个已创 ...
- MySQL数据查询之单表查询
单表查询 简单查询 - 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMEN ...
- SAS 逻辑库
SAS逻辑库 SAS逻辑库是一个或多个SAS文件的集合,用于组织.查找和管理 SAS文件.SAS逻辑库管理的SAS文件包括SAS数据集.SAS目录.已编 译的SAS程序,以及多维数据库文件等. 1.逻 ...
- Python实例浅谈之三Python与C/C++相互调用
一.问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结. 二.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不经过 ...
- C++ MFC棋牌类小游戏day4
根据昨天的计划,今天开始做下面的内容. 1.鼠标点击事件 2.点击坐标进行处理.(坐标转换) 3.判断选中的位置是否有效. 4.确定选中的棋子,设置棋子的状态和棋子所在坐标的状态. 5.判断移动是否有 ...