Nginx反向代理转发Apache配置 之 Cookie去哪儿了?
在公司接办了个微信项目,因为微信情形下会见网站必要行使对外开放的域名,以是有相干题目,都是直接运维同事资助处理赏罚。 道理是这样: 方案一: 将域名理会指向测试处事器的地点; 开放相干端口会见权限; 方案二: 将域名理会指向内网测试处事器的某一台;(也利便用于测试https证书题目) 由该台处事器转发处事到响应必要的测试处事器; 开拓本台测试处事器及转发的测试处事器的端口权限; 最初,我们行使第一种方案,可是每次都要贫困好几组的同事一路处理赏罚,,才气搞定,因此启用了方案二。开了一台中转处事器,搭建nginx处事,指向了我们当前测试的一台处事器,其间,碰着的题目。运维同事没时刻,交给我们本身来搞。好嘛,碰着题目了。 题目1、无法找到响应项目题目? 由于nginx只认真将哀求转发到该台呆板的80或其他端口上了,并没有细心设置,因此无法找到对应的项目。 办理:在apache 中添加响应vhost设置,示譬喻下: DocumentRoot /www/web/madmin/public_html#ServerName admin.123.com#ServerAlias 10.8.0.1ServerName 192.168.1.212ErrorDocument 400 /errpage/400.htmlErrorDocument 403 /errpage/403.htmlErrorDocument 404 /errpage/404.html#php_admin_value open_basedir /www/web/madmin:/tmpDeflateCompressionLevel 7AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-phpAddOutputFilter DEFLATE css js html htm gif jpg png bmp phpOptions FollowSymLinksAllowOverride AllOrder allow,denyAllow from all 这样,处事器就能正常理会项目了。 题目2、转发过来后,客户端ip获取不到了,获得的只是一个署理处事器ip。 由于涉及到转发,全部的对象都是也许丢掉的,在这里,就必要将原始IP转发过来,如下: upstream apache { server 127.0.0.1:80; keepalive 8;}upstream k_api { server 172.17.0.27:8080; keepalive 8;}server { listen 8091; server_name admin.123.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 60; proxy_read_timeout 600; proxy_send_timeout 600; } 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 60; proxy_read_timeout 600; proxy_send_timeout 600; }} 题目3、行使nginx署理后,一向无法登录,经排查为cookie无法生涯? 这个题目困扰了我好久,也找了运维同事求教了好久,始终无法办理。最终,花了许多时刻去找资料,本身做了很多实行,终于发明白。 原本是处事器时刻差的题目,nginx处事器的时区配置为 EST,apache处事器的时区配置是 CST,那时区相差8小时。 以是cookie无效了。详细道理就是,登录后会在apache地址处事器配置cookie,有用期为1小时内有用,而转到nginx后,时刻却往前了8小时,因此处事器(可能是客户以为)会以为该cookie是逾期的,因此不会被生涯起来了。 办理:变动nginx时区和时刻,和apache同等。修改时刻时区的呼吁如下: #修改时刻date -s 12:12:12 # 时刻改为了 12:12:12date -s 20170112 # 日期变动为2017/01/12date -s ”12:12:12 2017-01-00“ # 时刻改为了2017-01-00 12:12:12#修改时区tzselect #按照提醒修改成响应时区 题目4、监听端口题目? 按照必要配置监听响应端口,留意端口不能斗嘴了! nginx着实挺好玩的,有很预置变量,不懂的去搜下文档,根基都能办理。 重在实践吧! 【编辑保举】
点赞 0 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |