nginx为目录添加访问控制和UA实现手机端和电脑端的分离
nginx为目录添加访问控制
==用户访问控制:==使用apache的htpasswd来创建密码文件。
[root@localhost ~] yum -y install httpd-tools
[root@localhost ~] htpasswd -c /usr/local/nginx/.htpasswd crushlinux
#设置密码
[root@localhost ~] vim /usr/local/nginx/conf/nginx.conf
#我们这里是匹配的是status,当然也可以将后两条写在其他的location{}之中
location ~ /status {
stub_status on; #开启状态统计功能
access_log off; #不写入日志,由于用户访问的是状态统计并不是在访问网页所以不记录到日志文件中
auth_basic "Nginx Status"; #基本认证,由于摘要日志有的浏览器不支持,故我们用基本认证方式
auth_basic_user_file /usr/local/nginx/.htpasswd;
}
客户端地址访问控制
我们在配置文件中加入最后两行配置也就是allow和deny。
[root@localhost ~] vim /usr/lcoal/nginx/conf/nginx.conf
location ~ /status {
stub_status on;
access_log off;
auth_basic "Nginx Status";
auth_basic_user_file /usr/local/nginx/.htpasswd;
allow 192.168.1.3; #允许1.3访问
deny 192.168.1.0/24; #拒绝1.0网段
通过UA实现手机端和电脑端的分离
大家细心的人会发现,同样是csdn,我们手机App和电脑网页的内容是不一样的较为明显的是App上有一个极客头条(一段可在上班听的录音)所以接下来教大家来配置手机端和电脑端的分离,希望能帮到大家。
实现nginx区分pc和手机访问不同的网站,是物理上完全隔离的两套网站(一套pc端、一套移动端)这样带来的好处是pc端和移动端的内容可以不一样,移动版网站不需要包含特别多的内容,只要包含必要的文字和较小的图片即可,这样会更加的节省流量。缺点是你需要维护两套环境,并且需要自动识别出来用户的物理设备并跳转到相应的网站,当判断错误时用户可以自己手动切换回正确的网站。
环境:有两套网站代码,一套PC版在/usr/local/nginx/html/web,一套移动版放在/usr/local/nginx/html/mobile。只需要修改nginx的配置文件,nginx通过UA来判断是否来自移动端访问,实现不同的客户端访问不同的内容。
创建目录的步骤我就不写了,自己去模拟网页就好了。
location / {
#默认PC端访问内容
root /usr/lcoal/nginx/html/web;
#如果是手机移动端访问内容,举几个常见的移动端的例子多了就不写了,其他的可在访问日志里面去看设备名,在手动添加到()里面。
if ( $http_user_agent ~
"(Mobile)|(MIDP)|(SAMSUNG)|(iPone)|(ZTE)|(PHILIPS)|(HAIER)|(java)|(curl)|(Android)|(LENOVO)")
{
root /usr/local/nginx/html/mobile;
}
index index.html index.html;
}
模拟案例:不同的浏览器访问到不同的页面
[root@localhost html] mkdir firefox msie
[root@localhost html] echo "hello,firefox" > firefox/index.html
[root@localhost html] echo "hello,chrome" > chrome/index.html
#在nginx.conf文件中加入配置
location / {
if ($http_user_agent ~ Firefox) {
root /usr/local/nginx/html/firefox;
}
if ($http_user_agent ~ Chrome) {
root /usr/local/nginx/html/chrome;
}
index index.html index.html;
}