Nginx CheatSheet
快速实现简单的访问控制
经常会遇到希望网站让某些特定用户的群体(比如只让公司内网)访问,或者控制某个uri不让人访问。Nginx配置如下:
其实deny
和allow是**ngx_http_access_module
模块(已内置)中的语法。采用的是从上到下匹配方式,匹配到就跳出不再继续匹配。上述配置的意思就是,首先禁止192.168.1.100访问,然后允许192.168.1.10-200 ip段内的访问(排除192.168.1.100),同时允许10.110.50.16这个单独ip的访问,剩下未匹配到的全部禁止访问。实际生产中,经常和ngx_http_geo_module**模块(可以更好地管理ip地址表,已内置)配合使用。
作者:ccfe链接:https://juejin.im/post/5bacbd395188255c8d0fd4b2来源:掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解决跨域
在页面代码里,把请求url换成http://mysite-base.com/apis/getPCBannerList.html 。这样就可以正常请求到数据。 这样其实是通过nginx,用类似于hack的方式规避掉了浏览器跨域限制,实现了跨域访问。
适配 PC 和移动环境
现在很多网站都存在PC站和H5站两个站点,因此根据用户的浏览环境自动切换站点是很常见的需求。Nginx可以通过内置变量$http_user_agent,获取到请求客户端的userAgent,从而知道用户处于移动端还是PC,进而控制重定向到H5站还是PC站。 以笔者本地为例,pc端站点是mysite-base.com,H5端是mysite-base-H5.com。pc端Nginx配置如下:
图片处理
在前端开发中,经常需要不同尺寸的图片。现在的云储存基本对图片都提供有处理服务(一般是通过在图片链接上加参数)。其实用Nginx,可以通过几十行配置,搭建出一个属于自己的本地图片处理服务,完全能够满足日常对图片的裁剪/缩放/旋转/图片品质等处理需求。要用到ngx_http_image_filter_module模块。这个模块是非基本模块,需要安装。 下面是图片缩放功能部分的Nginx配置:
这里只是最基本的配置。此外,可以通过proxy_cache配置Nginx缓存,避免每次请求都重新处理图片,减少Nginx服务器处理压力;还以可以通过和nginx-upload-module一起使用加入图片上传的功能等。