nginx转发用户请求
文章目录
【注意】最后更新于 March 8, 2017,文中内容可能已过时,请谨慎使用。
总所周知,nginx是一款很优秀的反代工具,针对用户的不同请求可以转发到不同的服务器上,最近做的项目用到了nginx,也做了一定得反向代理,现在记录下来,希望能够对需要的铜须提供帮助。
nginx的配置文件也比较通俗易懂,这是一个我写好的转发配置
|
|
当时做的时候遇到了几个问题,在这记录一下。
#php启动错误
有一次我是想用nginx反代下php,结果总是代理出错,看日志也是一脸懵逼,不知道怎么个情况,在网上搜的也都是太高级,感觉不是我遇到的问题。最后发现我nginx第一行的user跟php的不一致,导致总是出现问题,改成一致就正常了。
#自定义头部
从我这个配置文件里面可以看出,我做转发的时候是基于不同的请求头的,而且不是http标准的请求头,是一个叫做X-User的头做的转发。刚开始还不太明白怎么对自定义请求头转发,在网上查了查发现nginx是可以处理这种自定义头的。proxy_set_header可以将我X-User 使我设置为$http_x_user
。注意这个地方的问题,要使用$http_x_user
,注意,要使用$http
开头,然后就可以进行使用了。
#if出错
当时我写好配置文档后不管怎么执行就是结果不对,if的语句错误,在网上查了一堆,怎么解释的都有,就是没有一个解决问题的。
最后无奈之下我看着我的文件跟官方的配置文件进行对比,发现是if语句跟{}之间要有个空格,不注意的就没有就会报错了。真坑爹啊!
这比python代码还坑!
#相关配置文件解释
实际上这个配置文件我不解释大部分同学也都能够看得懂了,不过还是啰嗦几句吧。
proxy_pass这个就是转发的,后面的内容就是将请求转发到的服务器上。
upstream就是转发的服务器,接受处理转发过来的请求,里面的内容就是具体的服务器的地址。可以写多个,进行负载均衡。nginx提供了一些负载均衡的算法了,比如轮询,比如最少链接等等。
#学习
实际上假设就这么一用nginx或许就到头了,但是我发现nginx的功能可远远不限制与此。
由于nginx开源,使得用户可以添加自己想要的功能进去。而这才是nginx的魅力所在吧。然而由于经历以及时间关系,我一直都没有深入的学习,我目前只是在入门的阶段,以后有机会了要好好研读下。只是nginx的有点也算缺点,是用c写的,相对来说难以理解一点。
nginx_lession是淘宝等好多大神一起写的教程,写的比较清晰明快,先记录下,有机会一定要学习学习。