1、nginx反向代理


首先在本地启动一个端口号为80的node服务,这个服务会被代理到192.168.0.0.1的ip地址上。也就说你可以通过访问192.168.0.0.1这个地址访问到你本地80端口的服务。

server{
   
   listen 80;
   server_name localhost;
   
       location /{
   
           proxy_pass http://192.168.0.0.1
       }
}

2、nginx负载均衡


在本地开启两个服务相同,端口不同的相同服务。把他添加到nginx反向代理的地址就可以了。nginx会为我们自动完成双机热备。

upstream mysite{
   
   server 127.0.0.1:8001 weight=10;
   server 127.0.0.1:8002 weight=1;
   server 127.0.0.1:8002 weight=1;}
server{
   
   listen 80;
   server_name localhost;
   
   location /{
   
       proxy_pass http://mysite
   }
}

3、nginx双机热备


阿里云服务器的vip服务不是免费的,如果你想使用keepalived来实现双机热备,那么你需要购买一个vip(虚拟ip)。

4、nginx解决跨域

server {
       listen   80;    server_name   localhost; # 用户访问 localhost,反向代理到 http:/www.hqwluck.xyz
location / {
           proxy_pass http://www.hqwluck.xyz    }}

5 、nginx防盗链

location ~* ^.+\.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)${
   
valid_referers none blocked  www.flighting.top;
if ($invalid_referer) {
   
#return 302  http://www.flighting.top/img/nolink.jpg;
return 404;
break;
}
access_log off;
}

6、nginx访问设置

基于ip的控制访问

## 允许单个ip访问
location ~ ^/index.html{
   
       deny all;#不允许访问ip
       allow 127.0.0.1;   ##允许访问ip
       index  index.html index.htm;
   }
## 允许一个ip段进行访问
location ~ ^/index.html{
   
       root   /app;  
       deny 192.168.1.0/24;192.168.0.0/16;
       allow all;
       index  index.html index.htm;
   }

基于用户的信任登陆

不安全这里不做阐述。

7、nginx请求限制

链接频率限制

# $binary_remote_addr 远程IP地址 zone 区域名称 10m内存区域大小
limit_conn_zone $binary_remote_addr zone=coon_zone:10m;
server {
       
# conn_zone 设置对应的共享内存区域 1是限制的数量 
limit_conn conn_zone 1;
}

请求频率限制

# $binary_remote_addr 远程IP地址 zone 区域名称 10m内存区域大小 rate 为请求频率 1s 一次
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
server {
       location / {
   
# 设置对应的共享内存区域 burst最大请求数阈值 nodelay不希望超过的请求被延迟        
limit_req zone=req_zone burst=5 nodelay;  
}}

8、服务器状态操作

upstream webcanteen {
    
   server 127.0.0.1:66 down; #down  当前服务器不参加负载均衡
   server 127.0.0.1:77 backup; #当其他节点无法使用时成为备用节点
   server 127.0.0.1:88  max_fails=3 fail_timeout=10s; #服务器请求失败次数达到就会休眠 、  服务器暂停时间
   server 127.0.0.1:99 max_conns=1000;}  #限制服务器最大接受链接次数

9、补充

项目在生产环境上的服务器发生宕机的情况,应该如何解决?

1、故障转移 转移到备用nginx服务器

2、自动心跳检查 使用keepalived实现心跳检查

3、负载均衡

4、自动重启 需要自写脚本

10、nginx Upstream 实现简单双机主从热备

upstream testproxy{
   
    server 127.0.0.1:8080;
    server 127.0.0.1:8081 backup;
}

server{
   
    listen 80;
    server-name localhost;
}

location{
   
    proxy_pass http://testproxy;
    index index.html index.htm;
}

11、Lvs+Keepalived+Nginx实现高性能负载均衡双机热备集群

  • Lvs:是一种四层负载均衡器,其实软负载均衡,完成所有负载均衡业务需求。他提供虚拟化技术服务,虚拟VIP的创建(虚拟ip)。

  • nginx:是一种七层负载均衡,主要针对于应用层负载均衡(http)。lvs相比于nginx使用场景更加广泛。

  • Keepalived:实在Lvs基础支上,实现心跳检查、故障转移,如果服务器发生宕机的时候,可以尝试自动重试脚本。(高可用)


  • 环境配置

两台nginx服务器

nginx 主服务器 192.168.212.143

nginx 备服务器 192.168.212.144

Lvs虚拟bip192.168.212.110

在typecho的使用过程中,一些插件的安装会导致typecho原有内容被替换。

  • 问题描述:
    我在大量安装插件后,出现了typecho默认的文本编辑器消失,导致我不能正常的撰写博文。
  • 解决方案:
    下载UEditor for Typecho文本编辑插件替换原有的typecho文本编辑插件。(具体安装方式请看下载文件中的README.md)
  • 宝塔安装UEditor for Typecho
    下载zip结尾的UEditor for Typecho文件,解压到桌面,把解压后的文件中的UEditor文件夹上传到网站的plugins的文件夹中,再去typecho的后台插件面板上启用就可以了。