常用基本配置
基本http
server {
listen 80;
listen [::]:80;
server_name localhost;
root html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
基本https
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /example/crt.pem;
ssl_certificate_key /example/key.pem;
server_name localhost;
root html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
基本多上游
upstream backend {
server backend1.example.com weight=1;
server backend2.example.com weight=2;
server backend3.example.com weight=3;
}
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
proxy_pass http://backend;
}
}
基本反代
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
proxy_pass http://example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
http转https
server {
listen 80;
listen [::]:80;
return 301 https://$host$request_uri;
}
上传大小限制
server {
listen 80;
listen [::]:80;
server_name localhost;
root html;
index index.html;
client_max_body_size 1024m;
location / {
try_files $uri $uri/ =404;
}
}
自定义错误页面
server {
listen 80;
listen [::]:80;
server_name localhost;
root html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
error_page 500 502 503 504 /custom_50x.html;
location = /custom_50x.html {
root /usr/share/nginx/html;
internal;
}
}
多域名配置
第一步
在nginx.conf同级目录下添加配置文件gooll-a.conf 和gooll-b.conf。
在gooll-a.conf添加如下代码:
server{
listen 80;
server_name a.gooll.live;
index b.html;
root testabc; //设置访问的根目录
}
在gooll-b.conf添加如下代码:
server{
listen 80;
server_name a.gooll.live;
index b.html;
root testabc;
}
第二步
修改主配置文件nginx.conf,在http{ }作用域内添加
include gooll-a.conf;
include gooll-b.conf;
第三步
在nginx目录下创建testabc文件夹,在文件夹内放置两个域名对应的html文件
重启nginx ,然后访问a.gooll.live和b.gooll.live将打开不同页面
Nginx反向代理
打开nginx.conf文件在http{ }内添加如下内容:
upstream app2 {
server 192.13.9.254:20000; #被代理的ip和端口
}
server {
listen 80;
server_name test;
location / {
proxy_pass http://app2; #使用代理
}
}
NGINX访问限制
limit_req_moudle请求限制语法:
1.声明一个存储空间(仅在http中)
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s
$binary_remote_addr(客户ip),区域名称zone为one(自定义),10m(占用空间大小),5r/s(平均请求频率5次/秒)
或
limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/s;
# $uri:不带客户端请求参数
或
limit_req_zone $binary_remote_addr $request_uri zone=thre:3m rate=1r/s;
# $request_uri:带客户端请求参数
2.限制某个空间的并发(可在http,server,location中)
limit_req zone=one burst=5 nodelay;
burst=5(缓冲队列长度,访问超过频率后的延迟个数),nodelay(不做延迟处理),当请求超过rate+burst就会溢出,直接返回错误状态码(默认是503)
limit_conn_module连接限制语法
1.声明存储空间(仅http中)
limit_conn_zone $binary_remote_addr zone=addr:10m
空间zone名称为addr(自定义)
2.限制某个空间的并发(可在http,server,location中)
limit_conn addr 2
空间名称为addr,并发数量为2
3.日志等级(可在http,server,location中)
limit_conn_log_level **
4.状态码(可在http,server,location中)
limit_conn_status **
超过限制后返回状态码**,默认是503
http_access_module基于ip访问控制语法
(可在http,server,location,limit_except中)
deny 192.168.1.1;
deny all;
allow 192.168.1.0/24
allow 10.1.1.0/16;
allow (ipv6)