昆明网站代理,php app网站建设,抓取网站访客qq,到那里找做网站的兼职1.正向代理
定义解释#xff1a;正向代理就是代理服务器替客户端去访问目标服务器。 实现效果#xff1a;在浏览器输入 http://www.google.com , 浏览器跳转到http://www.google.com 具体配置#xff1a;
server{resolver 8.8.8.8;listen 80;location / {proxy_pass http:…1.正向代理
定义解释正向代理就是代理服务器替客户端去访问目标服务器。 实现效果在浏览器输入 http://www.google.com , 浏览器跳转到http://www.google.com 具体配置
server{resolver 8.8.8.8;listen 80;location / {proxy_pass http://$http_host$request_url;}
} 在需要访问外网的客户端上执行以下一种操作即可 方法1推荐 export http_proxyhttp://你的正向代理服务器地址 : 代理端口 方法2 vim ~/.bashrc export http_proxyhttp://你的正向代理服务器地址 : 代理端口
2.反向代理
定义解释反向代理指代理后端服务器响应客户端请求的一个中介服务器代理的对象是服务端 具体配置 #实现效果在浏览器输入 http://www.abc.com , 从 nginx 服务器跳转到 linux 系统 tomcat 主页面
server {listen 80; server_name 192.168.4.32; #监听地址location / { root html; #/html目录proxy_pass http://127.0.0.1:8080; #请求转向index index.html index.htm; #设置默认页 } }实现效果根据在浏览器输入的路径不同跳转到不同端口的服务中。
server {listen 9000; server_name 192.168.4.32; #监听地址 location ~ /example1/ { proxy_pass http://127.0.0.1:5000; # 对发送给客户端的URL进行修改的操作# proxy_redirect off;# proxy_set_header Host $host;# proxy_set_header X-Real-IP $remote_addr;# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;#proxy_max_temp_file_size 0; } location ~ /example2/ { proxy_pass http://127.0.0.1:8080; } }location 指令说明
~ : 表示url包含正则表达式且区分大小写。~* : 表示url包含正则表达式且不区分大小写。 : 表示url不含正则表达式要求严格匹配。
3.负载均衡
实现效果在浏览器地址栏输入http://192.168.4.32/example/a.html 平均到 5000 和 8080 端口中实现负载均衡效果。 具体配置
upstream myserver { server 192.167.4.32:5000;server 192.168.4.32:8080;} server {listen 80; #监听端口server_name 192.168.4.32; #监听地址location / { root html; # html目录index index.html index.htm; # 设置默认页proxy_pass http://myserver; # 请求转向 myserver 定义的服务器列表 } }nginx 分配服务器策略 - 轮询默认 按请求的时间顺序依次逐一分配如果服务器down掉能自动剔除。 - 权重 weight 越高被分配的客户端越多默认为 1。比如 upstream myserver { server 192.167.4.32:5000 weight10; server 192.168.4.32:8080 weight5; } 复制代码 - ip 按请求 ip 的 hash 值分配每个访客固定访问一个后端服务器。比如 upstream myserver { ip_hash; server 192.167.4.32:5000; server 192.168.4.32:8080; } 复制代码 - fair 按后端服务器的响应时间来分配响应时间短的优先分配到请求。比如 upstream myserver { fair; server 192.168.4.32:5000; server 192.168.4.32:8080; } - least_conn; #把请求转发给连接数较少的后端服务器、upstream myserver {least_conn; server 192.168.4.32:5000; server 192.168.4.32:8080; }
**- 一次性hash (需要安装插件) ** 应用场景一致性hash : nginx / redis集群 / es内部节点
在每一种模式下每一台服务器可以携带参数如下 1.down: 当前服务器暂不参与负载 2.weight: 权重值越大服务器的负载量能够处理的请求量越大。 3.max_fails允许请求失败的次数默认为1。 4.fail_timeout:max_fails次失败后暂停的时间。 5.backup备份机 只有其它所有的非backup机器down或者忙时才会请求backup机器。
4.nginx 缓存
实现效果在3天内通过浏览器地址栏访问 http://192.168.4.32/a.jpg 不会从服务器抓取资源3天后过期则从服务器重新下载。 具体配置
http 区域下添加缓存区配置
proxy_cache_path /tmp/nginx_proxy_cache levels1 keys_zonecache_one:512m inactive60s max_size1000m;#server 区域下添加缓存配置
location ~ \.(gif|jpg|png|htm|html|css|js)(.*) {proxy_pass http://192.168.4.32:5000# 如果没有缓存则转向请求proxy_redirect off;proxy_cache cache_one;proxy_cache_valid 200 1h; #对不同的 HTTP 状态码设置不同的缓存时间proxy_cache_valid 500 1d;proxy_cache_valid any 1m;expires 3d;
}expires 是给一个资源设定一个过期时间通过 expires 参数设置可以使浏览器缓存过期时间之前的内容减少与服务器之间的请求和流量。也就是说无需去服务端验证直接通过浏览器自身确认是否过期即可所以不会产生额外的流量。此种方法非常适合不经常变动的资源。
5.动静分离
实现效果通过浏览器地址栏访问 http://www.abc.com/a.html 访问静态资源服务器的静态资源内容。通过浏览器地址栏访问 http://www.abc.com/a.jsp 访问动态资源服务器的动态资源内容。 具体配置
upstream static { server 192.167.4.31:80;
}upstream dynamic { server 192.167.4.32:8080;
}server {listen 80; # 监听端口server_name www.abc.com; # 监听地址# 拦截动态资源location ~ .*\.(php|jsp)$ {proxy_pass http://dynamic;}# 拦截静态资源location ~ .*\.(jpg|png|htm|html|css|js)$ { root /data/; # html目录proxy_pass http://static;autoindex on;; # 自动打开文件列表}
}6.高可用
一般情况下通过 nginx 主服务器访问后台目标服务集群当主服务器挂掉后自动切换至备份服务器此时由备份服务器充当主服务器的角色访问后端目标服务器。 6.1 实战一 实现效果 准备两台 nginx 服务器通过浏览器地址栏访问虚拟 ip 地址把主服务器的 nginx 停止再次访问虚拟 ip 地址仍旧有效。
具体配置 1在两台 nginx 服务器上安 keepalived。 keepalived 相当于一个路由它通过一个脚本来检测当前服务器是否还活着如果还活着则继续访问否则就切换到另一台备份服务器。
# 安装 keepalived
yum install keepalived -y# 检查版本
rpm -q -a keepalivedkeepalived-1.3.5-16.el7.x86_642修改主备服务器 /etc/keepalived/keepalivec.conf 配置文件可直接替换完成高可用主从配置。 keepalived 将 nginx 服务器绑定到一个虚拟 ip nginx 高可用集群对外统一暴露这个虚拟 ip客户端都是通过访问这个虚拟 ip 来访问 nginx 服务器 。
global_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from_Alexandre.Cassenfirewall.locsmtp_server 192.168.4.32smtp_connect_timeout 30router_id LVS_DEVEL # 在 /etc/hosts 文件中配置通过它能访问到我们的主机
}vrrp_script_chk_http_port { script /usr/local/src/nginx_check.shinterval 2 # 检测脚本执行的时间间隔weight 2 # 权重每次加2
}vrrp_instance VI_1 {interface ens7f0 # 网卡需根据情况修改state MASTER # 备份服务器上将 MASTER 改为 BACKUPvirtual_router_id 51 # 主备机的 virtual_router_id 必须相同priority 100 # 主备机取不同的优先级主机值较大备份机值较小advert_int 1 # 每隔多长时间默认1s发送一次心跳检测服务器是否还活着authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100 # VRRP H 虚拟地址可以绑定多个}
}字段说明
router_id 在 /etc/hosts 文件中配置通过它能访问到我们的主机。 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 LVS_DEVELinterval 设置脚本执行的间隔时间weight 当脚本执行失败即 keepalived 或 nginx 挂掉时权重增加的值可为负数。interface 输入 ifconfig 命令查看当前的网卡名是什么。 ens7f0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500 inet 192.168.4.32 netmask 255.255.252.0 broadcast 192.168.7.255 inet6 fe80::e273:9c3c:e675:7c60 prefixlen 64 scopeid 0x20 … …
3配置sh脚本 在 /usr/local/src 目录下添加检测脚本 nginx_check.sh。
#!/bin/bash
Aps -C nginx -no-header |wc -l
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 2if [ ps -C nginx -no-header |wc -l -eq 0 ];thenkillall keepalivedfi
fi4启动两台服务器的 nginx 和 keepalived。
# 启动 nginx
./nginx# 启动 keepalived
systemctl start keepalived.service5检查验证 查看虚拟 ip 地址 ip a 。把主服务器 192.168.4.32 nginx 和 keepalived停止再访问虚拟 ip 查看高可用效果。