应用场景
- http服务器。Nginx是一个http服务可以独立提供http服务。(可以做网页静态服务器)
- 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
- 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用Nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
反向代理
server {
listen 80;
server_name www.honva6.dev.com;
location / {
proxy_pass 127.0.0.1:8080;
index index.html index.htm;
}
listen表示nginx默认监听的端口号,server_name表示用户访问的域名地址,location /表示拦截所有的请求,拦截后跳转到127.0.0.1:8080端口地址
负载均衡
- 轮询机制
- 权重
- ip绑定
#upstream backserver配置轮询的服务器地址,weight表示各个服务器的权重,权重按比例生效而不是按数量。比如2:1 和 4:2是相同的
upstream backserver{
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:8081 weight=1;
}
server {
listen 80;
#此处需要配置服务器的对应代理
server_name www.honva6.dev.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://backserver;
index index.html index.htm;
}
}
宕机轮询机制
当集群服务器中有一台宕机,会自动访问到集群中的下一台服务器,不影响用户操作
。也可以使用第三方工具keepaalive,当机器宕机后会自动执行重启服务器的脚本。
location / {
proxy_pass http://backserver;
index index.html index.htm;
#宕机轮询配置如下
#连接时间超过1s,自动轮询到下一台服务器
proxy_connect_timeout 1;
# 发送时间相应超过1s,自动轮询到下一台服务器
proxy_send_timeout 1;
# 读取时间超过1s,自动轮询到下一台服务器
proxy_read_timeout 1;
}
Nginx层面解决跨域问题
server {
listen 80;
server_name www.itmayiedu.com;
#当访问域名A的时候,跳转到A对应的地址
location /A {
proxy_pass http://a.a.com:81/A;
index index.html index.htm;
}
#当访问域名B的时候,跳转到B对应的地址
location /B {
proxy_pass http://b.b.com:81/B;
index index.html index.htm;
}
}
Nginx防盗链
server {
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
#
valid_referers blocked *.honva6.dev.com honva6.dev.com;
if($invalid_referer) {
rewrite ^/ http://www.honva6.dev.com/404.jpg;
}
expires 30d;
}
Nginx配置DDOS
http{
#触发条件:所有访问ip 限制每秒2个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s;
server {
...
location /login.html {
#引用one共享内存区来实现限制访问/login.html的目的
limit_req zone=one;
...
}
}
}
各参数说明:
- $binary_remote_addr :客户端的ip,二进制远程地址
- zone=one:10m : 定义zone名字叫one,并为这个zone分配10M内存,用来存储会话(二进制远程地址),1m内存可以保存16000会话
- rate=2r/s : 每秒2个请求
后续....
网友评论