nginx会话保持与防盗链

nginx 会话保持
nginx会话保持主要有以下几种实现方式 。
1、ip_haship_hash使用源地址哈希算法 , 将同一客户端的请求总是发往同一个后端服务器 , 除非该服务器不可用 。
ip_hash语法:
upstream backend {ip_hash;server backend1.example.com;server backend2.example.com;server backend3.example.com down;}ip_hash简单易用 , 但有如下问题: 当后端服务器宕机后 , session会丢失; 来自同一局域网的客户端会被转发到同一个后端服务器 , 可能导致负载失衡;
2、sticky_cookie_insert使用sticky_cookie_insert , 这会让来自同一客户端的请求被传递到一组服务器的同一台服务器 。 与ip_hash不同之处在于 , 它不是基于IP来判断客户端的 , 而是基于cookie来判断 。 (需要引入第三方模块才能实现)
sticky模块
语法:
upstream backend {server backend1.example.com;server backend2.example.com;sticky_cookie_insert srv_id expires=1h domain=3evip.cn path=/;}说明: expires:设置浏览器中保持cookie的时间 domain:定义cookie的域 path:为cookie定义路径
4、使用后端服务器自身通过相关机制保持session同步 , 如:使用数据库、redis、memcached 等做session复制
10、nginx 实现动静分离为了加快网站的解析速度 , 可以把动态页面和静态页面由不同的服务器来解析 , 加快解析速度 。 降低原来单个服务器的压力 。简单来说 , 就是使用正则表达式匹配过滤 , 然后交个不同的服务器 。
1、准备环境
准备一个nginx代理 两个http 分别处理动态和静态 。
1.配置nginx反向代理upstream;upstream static {server 10.0.105.196:80 weight=1 max_fails=1 fail_timeout=60s;}upstream php {server 10.0.105.200:80 weight=1 max_fails=1 fail_timeout=60s;}server {listen80;server_namelocalhost#动态资源加载location ~ \.(php|jsp)$ {proxy_pass http://phpserver;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#静态资源加载location ~ .*\.(html|jpg|png|css|js)$ {proxy_pass http://static;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}静态资源配置server {listen 80;server_namelocalhost;location ~ \.(html|jpg|png|js|css) {root /home/www/nginx;}}动态资源配置:yum 安装php7.1[root@nginx-server ~]#rpm -Uvh [root@nginx-server ~]#rpm -Uvh [root@nginx-server ~]#yum install php71w-xsl php71w php71w-ldap php71w-cli php71w-common php71w-devel php71w-gd php71w-pdo php71w-mysql php71w-mbstring php71w-bcmath php71w-mcrypt -y[root@nginx-server ~]#yum install -y php71w-fpm[root@nginx-server ~]#systemctl start php-fpm[root@nginx-server ~]#systemctl enable php-fpm编辑nginx的配置文件:server {listen80;server_namelocalhost;location ~ \.php$ {root/home/nginx/html;#指定网站目录fastcgi_pass127.0.0.1:9000;#指定访问地址fastcgi_indexindex.php;#指定默认文件fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; #站点根目录 , 取决于root配置项includefastcgi_params;#包含nginx常量定义}}当访问静态页面的时候location 匹配到 (html|jpg|png|js|css) 通过转发到静态服务器 , 静态服务通过location的正则匹配来处理请求 。
当访问动态页面时location匹配到 .\php 结尾的文件转发到后端php服务处理请求 。
【nginx会话保持与防盗链】11、nginx 防盗链问题
两个网站 A 和 B ,B网站引用了A网站上的图片 , 这种行为就叫做盗链 。防盗链 , 就是要防止B引用A的图片 。 1、nginx 防止网站资源被盗用模块
ngx_http_referer_module如何区分哪些是不正常的用户?
HTTP Referer是Header的一部分 , 当浏览器向Web服务器发送请求的时候 , 一般会带上Referer ,
告诉服务器我是从哪个页面链接过来的 , 服务器借此可以获得一些信息用于处理 , 例如防止未经允许
的网站盗链图片、文件等 。 因此HTTP Referer头信息是可以通过程序来伪装生成的 , 所以通过Referer
信息防盗链并非100%可靠 , 但是 , 它能够限制大部分的盗链情况.
2. 防盗链配置配置要点:
[root@nginx-server ~]# vim /etc/nginx/nginx.conf# 日志格式添加"$http_referer"log_formatmain'$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# valid_referers 使用方式Syntax:valid_referers none | blocked | server_names | string ...;Default:—Context: server, location