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配置 之 cookie去哪儿了?
在公司接手了个微信项目,由于微信环境下访问网站需要使用对外开放的域名,所以有相关问题,都是直接运维同事帮忙处理. 原理是这样: 方案一: 1. 将域名解析指向测试服务器的地址: 2. 开放相关端口访问 ...
- 修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题
一.修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要 ...
- nginx 反向代理 与 Apache backend的配置联合配置
nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1. 设置域名, 子域名映射到指定服务器ip ...
- nginx和apache配置目录浏览功能
今天工作需要,要给客户提供一个patch的下载地址,于是想用nginx的目录浏览功能来做,需要让客户看到指定一个目录下的文件列表,然后让他自己来选择该下载那个文件: 我们都知道在apache下可以配置 ...
- nginx上传目录配置,禁止执行权限
我们经常会把网站的图片文件上传目录设置为只可上传文件但不能执行文件,就是要禁止执行权限,小编来给大家举一个上传目录配置,禁止执行权限方法,各位可参考. 如果不让有执行权限最简单的办法 代码如下 复制 ...
- 配置nginx php上传大文件
配置nginx php上传大文件: 1. 修改PHP配置文件中的三项:vim /usr/local/php/etc/php.ini 1.file_uploads 设为On,允许通过HTTP上传文件 2 ...
- nginx反向代理结合apache和php的配置示例
.前端nginx主配置文件 # cat nginx.conf worker_processes ; #pid logs/nginx.pid; pid /data/www/logs/nginx.pid; ...
- Nginx系列4之基础配置
preface 公司跑得大多数是LNMP平台,所以借此机会多多了解下Nginx.下面主要说说Nginx下面几点: 防盗链 日志切割 负载均衡 虚拟主机 location匹配解释 substatus状态 ...
- HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)
这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计 ...
随机推荐
- 使用python的Flask实现一个RESTful API服务器端
使用python的Flask实现一个RESTful API服务器端 最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了. 本文 ...
- JS获取渲染后的样式
一般我们利用element.style.属性来获取CSS的样式,而此方法只能获取标签内的样式,无法获取头部或引入的样式,因此,而我们又需要获取其样式,则我们可以使用:(其中element为标签,pro ...
- PHP 4:从Login进一步看到的
原文:PHP 4:从Login进一步看到的 我们已经在PHP 3:从Login界面谈PHP标记谈到了PHP标记,不过其页面代码有一句 require_once('bookmark_fns.php'); ...
- .NET的DTO映射工具AutoMapper
.NET的DTO映射工具AutoMapper 原文:https://github.com/AutoMapper/AutoMapper/wiki/Getting-started 参考:http://ww ...
- c语言内存对齐(1)
在<C陷阱与缺陷>有这样一个例子: #include <stdio.h> int main(void) { int i; char c; ;i<;i++){ scanf( ...
- js实现是倒计时功能
工作中经常用到倒计时的功能,最近在整理之前做的项目的时候,发现自己写过一个倒计时的功能的效果,这里和大家分享下!实现这个功能是用原生js写的,不需要加载额外的库文件!功能比较简单,但是可以在此基础上扩 ...
- PHP+MYSQL分页原理
1.SQL语句中的limit用法 2.学习分页的一种公式 3.parse_url()解析URL函数 parse_url() 是将URL解析成有固定键值的数组的函数 4.$_SERVER["R ...
- 搞定KMP匹配算法
KMP算法介绍及实现——轻松搞定KMP匹配算法 本文介绍了字符串匹配算法中的BF算法和KMP算法.本文中KMP算法介绍部分是关于KMP算法相关文章中最简洁的一篇文章之一.下一篇将继续介绍Horspoo ...
- Java并发性和多线程
Java并发性和多线程介绍 java并发性和多线程介绍: 单个程序内运行多个线程,多任务并发运行 多线程优点: 高效运行,多组件并行.读->操作->写: 程序设计的简单性,遇到多问题, ...
- IOS学习之路二十二(UIAlertView获得文本框内容及添加北京图片)
今天写项目要用到警告框带输入框的,于是就自己做了个小demo. 效果图大体如下: 下面简单介绍一下UIAlertView alertViewStyle属性有以下三种选项: UIAlertViewSt ...