一、nginx限制IP,通过ngx_http_access_module模块来限制特定IP访问:
location / {
deny 192.168.1.1; # 阻止这个IP地址
allow all; # 允许所有其他IP地址
}
二、 nginx重定向:通过rewrite或return进行重定向
rewrite ^/(.*) http://www.newsite.com/$1 redirect;
301重定向
server {
listen 80;
server_name example.com;
location / {
return 301 http://www.newsite.com$request_uri;
}
}
302重定向
server {
listen 80;
server_name example.com;
location / {
return 302 http://www.newsite.com$request_uri;
}
}
三、nginx限流:用户访问服务器的请求数或连接数做限制
ngx_http_limit_conn_module及ngx_http_limit_req_module
ngx_http_limit_conn_module:主要用于设置用户并发连接数,一般用于服务器流量异常、负载过大,甚至是大流量的恶意攻击访问等场景。
ngx_http_limit_req_module:主要用于单个ip限流,限制单个ip的请求数,一般用于防止应用层的dos攻击,也可以被限制黑名单方式代替
ngx_http_limit_req_module来实现
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
server {
location / {
limit_req zone=mylimit;
proxy_pass http://my_upstream;
}
}
}
四、反向代理
在Nginx中配置反向代理的基本步骤如下:
-
打开Nginx配置文件,通常是
nginx.conf
或者位于/etc/nginx/conf.d/
目录下的某个.conf
文件。在
http
块中,使用server
块定义监听端口和接收的请求。 -
在
server
块内部,使用location
块来定义反向代理的行为,并指定要代理的上游服务器。 -
下面是一个简单的反向代理配置示例:
upstream backend {
server 192.168.1.10:8000;
server 192.168.1.11:8000 backup;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
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_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
listen 80;:指定 Nginx 监听的端口。
server_name example.com;:指定这个配置针对的域名。
location / { ... }:指定匹配路径 / 的请求将被代理到 192.168.1.10:8000。
proxy_pass http://192.168.1.10:8000;:设置代理目标地址。
proxy_set_header:设置代理请求头,以传递客户端信息给后端服务器。
error_page:指定错误页面的处理。
upstream 定义了一个名为 backend 的上游组,包含两个服务器,其中 192.168.1.11:8000 作为备用服务器。
重新加载 Nginx 配置
保存配置文件后,需要重新加载 Nginx 以使新的配置生效:
sudo systemctl reload nginx
如果遇到配置错误,可以使用以下命令检查配置文件的有效性:
sudo nginx -t
如果配置文件有效,上述命令将显示类似以下的输出:
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果配置无效,命令将指出配置文件中的错误。