#全局配置
user nobody;
worker_processes [number|auto]; #启动工作进程的数量一般设为和CPU核心数相同
worker_rlimit_nofile 65535 #worker进程所能打开的最多文件数量
pcre_jit on; #正则表达式启用 加快正则表达式的处理速度
worker_cpu_affinity 00000001 00000010 00000100 00001000 | auto;
#将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能
#若指定 worker_processes 的值为 auto, 则无法设置 worker_cpu_affinity
#通过命令查看 ps axo pid,cmd,psr | grep nginx
events {
#worker_connections 409600; #设置每一个 worker 进程可以并发处理的最大连接数。该值不能超过 worker_rlimit_nofile
worker_connections 65535;
multi_accept on;
#off:系统会逐个拿出新连接按照负载均衡策略,将其分配给当前处理连接个数最少的worker
#on:系统会实时的统计出各个 worker 当前正在处理的连接个数,然后会按照“缺编” 最多的 worker 的“缺编”数量,一次性将这么多的新连接分配给该 worker
use epoll; #设置worker 与客户端连接的处理方式
#这是三种多路复用机制。select 与 poll 工作原理几乎相同,而epoll 的效率最高l
}
http {
.....
include vhosts.conf; #包含文件
include conf.d/*.conf; #引用一下目录
}
server {
listen 80;
charset utf-8;
server_name lren.org ;
root d:/webroot/lren;
client_max_body_size 500m; #上传文件大小
location / {
index index.html index.htm;
if (-d $request_filename) { #解决不加index.php,跨域报错问题
rewrite ^(.*)?(.*)$ $1/index.php?$2 last;
}
try_files $uri $uri/ @router; #vue3路由 不能刷新问题
}
location @router {
rewrite ^.*$ /index.html last;
}
#php支持
location ~ [^/]\.php(/|$) {
fastcgi_pass php:9000;
include fastcgi_params;
}
#文件添加跨域访问支持
location ~* \.(m3u8|ts|eot|ttf|woff|svg|otf|jpg|png|gif)$ {
add_header Access-Control-Allow-Origin *;
}
}
server {
listen 443 ssl default http2; #http2支持
server_name study-cdn.jobpi.cn;
charset utf-8;
root /data/www;
client_max_body_size 500m;
ssl_certificate /ssl/jobpi.cn.pem;
ssl_certificate_key /ssl/jobpi.cn.key;
ssl_ciphers HIGH:!aNULL:!MD5; #HIGH表示使用安全性高的加密套件,!aNULL 排除掉没有认证的交的算法 !MD5排除掉md5的加密套件
ssl_ciphers HIGH:!aNULL:!MD5:!LOW:!3DES:!DES ; #禁用低版本 md5, des等套件
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
#server_name_in_redirect off; #开启或关闭nginx将server_name指令指定的首要虚拟主机名用于发起的绝对重定向
#port_in_redirect off;
location / {
index index.php index.html index.htm;
if (-d $request_filename) { #解决不加index.php,跨域报错问题
rewrite ^(.*)?(.*)$ $1/index.php?$2 last;
}
}
location ~ [^/]\.php(/|$) {
fastcgi_pass php:9000;
include fastcgi_params;
}
location ~* \.(m3u8|ts|eot|ttf|woff|svg|otf|jpg|png|gif)$ {
add_header Access-Control-Allow-Origin *;
}
}
upstream crmqcjspxyun8502{
#ip_hash; #负载方式
server 172.17.214.105:8501;
#server 172.17.214.104:8501 weight=1; #权重
#server 172.17.214.105:8501 weight=2;
}
server {
listen 80;
server_name www.xxx.com;
charset utf-8;
location / {
#proxy_pass http://172.17.214.106:8501; #直接引用
proxy_pass http://crmqcjspxyun8502; #通过upstream
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Nginx支持Range请求。Range请求是一种HTTP协议中用于下载大文件或断点续传的机制。当客户端发送带有Range头部字段的请求时,服务器可以返回指定范围的响应内容,而不是整个文件
location / {
# 启用Range请求支持
range_filter on;
range_header on;
}
server {
location ~* \.(gif|jpg|png)$ {
valid_referers none blocked *.xxx.cn;
if ($valid_referers) {
return 403;
}
}
...
}
server {
location / {
if ($http_user_agent ~* '(android|iphone|ipad)') {
rewrite ^/(.*)$ https://m.xxx.cn/$1;
}
if ($http_user_agent ~* '(android|iphone|ipad)') {
rewrite ^.*$ https://admission.lvu.edu.cn/h5/index.html;
}
}
}
http {
map $http_user_agent $is_mobile {
default 0; # 默认为0,表示电脑
~*android|iphone|ipad 1; # 如果User-Agent包含这些关键字,则为1,表示手机
}
server {
location / {
if ($is_mobile) { # 如果是手机,重定向到手机版网站
return 302 http://m.example.com$request_uri;
}
....
}
}
}