nginx相关配置与使用

nginx.conf 核心配置文件

  1. 设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为 nobody
    user root;
  2. worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行
    worker_processes 1;
  3. nginx 日志级别 debug | info | notice | warn | error | crit | alert | emerg ,错误级别从左到右越来越大
  4. 设置nginx进程 pid
    pid logs/nginx.pid;
  5. 设置工作模式
events {
默认使用epoll
use epoll;
每个worker允许连接的客户端最大连接数
worker_connections 10240;
}
  1. http 是指令块,针对http网络传输的一些指令配置
http {
}
  1. include 引入外部配置,提高可读性,避免单个配置文件过大
    include mime.types;
  2. 设定日志格式, main 为定义的格式名称,如此 access_log 就可以直接使用这个变量了
    参数名 参数意义
$remote_addr 客户端ip
$remote_user 远程客户端用户名,一般为:’-’
$time_local 时间和时区
$request 请求的url以及method
$status 响应状态码
$body_bytes_send 响应客户端内容字节数
$http_referer 记录用户从哪个链接跳转过来的
$http_user_agent 用户所使用的代理,一般来时都是浏览器
$http_x_forwarded_for 通过代理服务器来记录客户端的ip
  1. sendfile 使用高效文件传输,提升传输性能。启用后才能使用 tcp_nopush ,是指当数据表累积一定大小后才发送,提高了效率。
sendfile on;
tcp_nopush on;
  1. keepalive_timeout 设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗。
    #keepalive_timeout 0; keepalive_timeout 65;

root 与 alias

  • 假如服务器路径为:/home/imooc/files/img/face.png
  • root 路径完全匹配访问
  • 配置的时候为:
location /imooc {
root /home
}
  • 用户访问的时候请求为: url:port/imooc/files/img/face.png
  • alias 可以为你的路径做一个别名,对用户透明
  • 配置的时候为:
    location /hello { root /home/imooc }
    用户访问的时候请求为: url:port/hello/files/img/face.png ,如此相当于为目录 imooc 做一个自定义的别名。

location 的匹配规则

空格 :默认匹配,普通匹配

location / {
root /home;
}

= :精确匹配

root /home;
}

~* :匹配正则表达式,不区分大小写

location ~ \.(GIF|jpg|png|jpeg) {
root /home;
}

~ :匹配正则表达式,区分大小写

location ~ \.(GIF|jpg|png|jpeg) {
root /home;
}

^~ :以某个字符路径开头

root /home;
}

Nginx 跨域配置支持

    #允许跨域请求的域,*代表所有
    add_header 'Access-Control-Allow-Origin' *;
    #允许带上cookie请求
    add_header 'Access-Control-Allow-Credentials' 'true';
    #允许请求的方法,比如 GET/POST/PUT/DELETE
    add_header 'Access-Control-Allow-Methods' *;
    #允许请求的header
    add_header 'Access-Control-Allow-Headers' *;
     location / {
            root   html;
            index  index.html index.htm;
        }
}

Nginx 防盗链配置支持

    #对源站点验证
    valid_referers *.imooc.com;
    #非法引入会进入下方判断
    if ($invalid_referer) {
    return 404;
    }  
     location / {
            root   html;
            index  index.html index.htm;
        }
 }

upstream 指令参数

solw_start   设置一个时间 在这个时间内会慢慢的将 目标服务器的权重慢慢提高至设定的值
down         设置目标服务器宕机
backup       设置目标服务器作为备用机,当其他服务器全都宕机后就会运行当前服务器
max_fails    最大请求失败数一般配合fail_timeout使用
fail_timeout 设置监听服务器请求判断当前服务是否还能继续进行请求

upstream 指令参数 max_conns

#测试参考配置如下:
#worker进程设置1个,便于测试观察成功的连接数
worker_processes 1;
#配置集群服务器
upstream tomcats {
    #weigth 权重  值越大优先级越大
    #max_conns 限制当前服务器最大连接数
server 192.168.1.173:8080 weigth=1;
server 192.168.1.174:8080 max_conns=2;
server 192.168.1.175:8080 max_conns=2;
}

server {
     listen 80;
     sever_name localhost;
     location / {
         #http://tomcats 指向upstream配置的名字 需要带http
        proxy_pass http://tomcats;
    }
}  

upstream 指令参数 slow_start

    #slow_start 只有商业版的nginx才可以使用
    #设置一个时间 在这个时间内会慢慢的将 目标服务器的权重慢慢提高至设定的值
server 192.168.1.173:8080 weigth=6 slow_start = 60s;
server 192.168.1.174:8080 max_conns=2;
server 192.168.1.175:8080 max_conns=2;
}

Keepalived 提高吞吐量

#proxy_http_version :设置长连接http版本为1.1
#proxy_set_header :清除connection header 信息
upstream tomcats {
# server 192.168.1.173:8080 max_fails=2 fail_timeout=1s;
server 192.168.1.190:8080;
# server 192.168.1.174:8080 weight=1;
# server 192.168.1.175:8080 weight=1;
keepalive 32;
}
server {
    listen 80;
    server_name www.tomcats.com;
    location / {
        proxy_pass http://tomcats;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

负载均衡 url_hash 与 least_conn

upstream tomcats {
#ip_hash  根据IP进行hash算法
# url hash  根据url 进行hash算法
hash $request_uri;
# 最少连接数
# least_conn
server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;
}
server {
listen 80;
server_name www.tomcats.com;
location / {
proxy_pass http://tomcats;
}
}

Nginx的缓存

  1. 浏览器缓存:
    加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地
  2. Nginx缓存
    缓存在nginx端,提升所有访问到nginx这一端的用户
    提升访问上游(upstream)服务器的速度
    用户访问仍然会产生请求流量
    控制浏览器缓存:
alias /home/imooc;
# expires 10s; 10秒后清除缓存
# expires @22h30m; 设置在晚上10点30分清楚缓存
# expires -1h;  
# expires epoch;
# expires off;
expires max;
}

Nginx的反向代理缓存

# keys_zone 设置共享内存以及占用空间大小
# max_size 设置缓存大小
# inactive 超过此时间则被清理
# use_temp_path 临时目录,使用后会影响nginx性能
proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off
location / {
proxy_pass http://tomcats;
# 启用缓存,和keys_zone一致
proxy_cache mycache;
# 针对200和304状态码缓存时间为8小时
proxy_cache_valid 200 304 8h;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容