user USERNAME [GROUP]
user nginx lion; # 用户是 Nginx;组是 lion
pid
指定运行 Nginx master 主进程的 pid 文件存放路径。
pid /opt/nginx/logs/nginx.pid # master主进程的的 pid 存放在 nginx.pid 的文件
worker_rlimit_nofile_number
指定 worker 子进程可以打开的最大文件句柄数。
worker_rlimit_nofile 20480; # 可以理解成每个 worker 子进程的最大连接数量。
worker_rlimit_core
指定 worker 子进程异常终止后的 core 文件,用于记录分析问题。
worker_rlimit_core 50M; # 存放大小限制
working_directory /opt/nginx/tmp; # 存放目录
worker_processes_number
指定 Nginx 启动的 worker 子进程数量。
worker_processes 4; # 指定具体子进程数量
worker_processes auto; # 与当前 CPU 物理核心数一致
worker_cpu_affinity
将每个 worker 子进程与我们的 CPU 物理核心绑定。
worker_cpu_affinity 0001 0010 0100 1000; # 4个物理核心,4个 worker 子进程
将每个 worker 子进程与特定 CPU 物理核心绑定,优势在于,避免同一个 worker 子进程在不同的 CPU 核心上切换,缓存失效,降低性能。但其并不能真正的避免进程切换。
worker_priority
指定 worker 子进程的 nice 值,以调整运行 Nginx 的优先级,通常设定为负值,以优先调用 Nginx 。
worker_priority -10; # 120-10=110,110 就是最终的优先级
Linux 默认进程的优先级值是 120,值越小越优先;nice 定范围为 -20 到 +19 。
[备注] 应用的默认优先级值是 120 加上 nice 值等于它最终的值,这个值越小,优先级越高。
worker_shutdown_timeout
指定 worker 子进程优雅退出时的超时时间。
worker_shutdown_timeout 5s;
timer_resolutio
worker 子进程内部使用的计时器精度,调整时间间隔越大,系统调用越少,有利于性能提升;反之,系统调用越多,性能下降。
timer_resolution 100ms;
在 Linux 系统中,用户需要获取计时器时需要向操作系统内核发送请求,有请求就必然会有开销,因此这个间隔越大开销就越小。
daemon
指定 Nginx 的运行方式,前台还是后台,前台用于调试,后台用于生产。
daemon off; # 默认是 on,后台运行模式
配置文件 events 段核心参数
use
Nginx 使用何种事件驱动模型。
use method; # 不推荐配置它,让 Nginx 自己选择
method 可选值为:select、poll、kqueue、epoll、/dev/poll、eventport
worker_connections
worker 子进程能够处理的最大并发连接数。
worker_connections 1024 # 每个子进程的最大连接数为 1024
accept_mutex
是否打开负载均衡互斥锁。
accept_mutex on # 默认是 off 关闭的,这里推荐打开
server_name 指令
指定虚拟主机域名。
server_name name1 name2 name3
server_name www.nginx.com;
域名匹配的四种写法:
-
精确匹配: ;
-
左侧通配: ;
-
右侧统配:;
-
正则匹配: ;
匹配优先级:精确匹配 > 左侧通配符匹配 > 右侧通配符匹配 > 正则表达式匹配
server_name 配置实例:
1、配置本地 DNS 解析 vim /etc/hosts (macOS 系统)
121.42.11.34 www.nginx-test.com
121.42.11.34 mail.nginx-test.com
121.42.11.34 www.nginx-test.org
121.42.11.34 doc.nginx-test.com
121.42.11.34 www.nginx-test.cn
121.42.11.34 fe.nginx-test.club
[注意] 这里使用的是虚拟域名进行测试,因此需要配置本地 DNS 解析,如果使用阿里云上购买的域名,则需要在阿里云上设置好域名解析。
2、配置阿里云 Nginx ,vim/etc/nginx/nginx.conf
server {
listen 80;
server_name *.nginx-test.com;
root /usr/share/nginx/html/nginx-test/left-match/;
location / {
index index.html;
}
}
server {
listen 80;
server_name ~^..nginx-test…$;
root /usr/share/nginx/html/nginx-test/reg-match/;
location / {
index index.html;
}
}
server {
listen 80;
server_name www.nginx-test.*;
root /usr/share/nginx/html/nginx-test/right-match/;
location / {
index index.html;
}
}
server {
listen 80;
server_name www.nginx-test.com;
root /usr/share/nginx/html/nginx-test/all-match/;
location / {
index index.html;
}
}
3、访问分析
-
当访问 www.nginx-test.com 时,都可以被匹配上,因此选择优先级最高的“完全匹配”;
-
当访问 mail.nginx-test.com 时,会进行“左匹配”;
-
当访问 www.nginx-test.org 时,会进行“右匹配”;
-
当访问 doc.nginx-test.com 时,会进行“左匹配”;
-
当访问 www.nginx-test.cn 时,会进行“右匹配”;
-
当访问 fe.nginx-test.club 时,会进行“正则匹配”;
root
指定静态资源目录位置,它可以写在 http、server、location 等配置中。
root path
例如:
location /image {
root /opt/nginx/static;
}
当用户访问 www.test.com/image/1.png 时,实际在服务器找的路径是 /opt/nginx/static/image/1.png
[注意] root 会将定义路径与 URI 叠加,alias 则只取定义路径。
alias
它也是指定静态资源目录位置,它只能写在 location 中。
location /image {
alias /opt/nginx/static/image/;
}
当用户访问 www.test.com/image/1.png 时,实际在服务器找的路径是 /opt/nginx/static/image/1.png
[注意] 使用 alias 末尾一定要添加 / ,并且它只能位于 location 中。
location
配置路径。
location [ = | ~ | ~* | ^~ ] uri {
…
}
-
匹配规则:
-
精确匹配;
-
正则匹配,区分大小写;
-
正则匹配,不区分大小写;
-
匹配到即停止搜索;
匹配优先级:= > ^~ > ~ > ~* > 不带任何字符。
实例:
server {
listen 80;
server_name www.nginx-test.com;
location = /match_all/ {
root /usr/share/nginx/html
index index.html
}
location ~ .(jpeg|jpg|png|svg)$ {
root /usr/share/nginx/images;
}
location ^~ /bbs/ {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
location 中的反斜线
location /test {
…
}
location /test/ {
…
}
-
不带当访问 www.nginx-test.com/test 时, Nginx 先找是否有 test 目录,如果有则找 test 目录下的 index.html;如果没有 test 目录,Nginx 则会找是否有 test 文件。
-
带当访问 www.nginx-test.com/test 时,Nginx 先找是否有 test 目录,如果有则找 test 目录下的 index.html,如果没有它也不会去找是否存在 test 文件。
return
停止处理请求,直接返回响应码或重定向到其他 URL ;执行 return 指令后,location 中后续指令将不会被执行。
return code [text];
return code URL;
return URL;
例如:
location / {
return 404; # 直接返回状态码
}
location / {
return 404 “pages not found”; # 返回状态码 + 一段文本
}
location / {
return 302 /bbs ; # 返回状态码 + 重定向地址
}
location / {
return https://www.baidu.com ; # 返回重定向地址
}
rewrite
根据指定正则表达式匹配规则,重写 URL。
语法:rewrite 正则表达式 要替换的内容 [flag];
上下文:server、location、if
示例:rewirte /images/(..jpg)$ /pic/$1; # $1是前面括号(..jpg)的反向引用
-
flag 可选值的含义:
-
last 重写后的 URL 发起新请求,再次进入 server 段,重试 location 的中的匹配;
-
break 直接使用重写后的 URL ,不再匹配其它 location 中语句;
-
redirect 返回 302 临时重定向;
-
permanent 返回 301 永久重定向;
server{
listen 80;
server_name fe.lion.club; # 要在本地 hosts 文件进行配置
root html;
location /search {
rewrite ^/(.*) https://www.baidu.com redirect;
}
location /images {
rewrite /images/(.*) /pics/$1;
}
location /pics {
rewrite /pics/(.*) /photos/$1;
}
location /photos {
}
}
-
按照这个配置我们来分析:
-
当访问 fe.lion.club/search 时,会自动帮我们重定向到 https://www.baidu.com。
-
当访问 fe.lion.club/images/1.jpg 时,第一步重写 URL 为 fe.lion.club/pics/1.jpg,找到 pics 的 location,继续重写 URL 为 fe.lion.club/photos/1.jpg,找到 /photos 的 location 后,去 html/photos 目录下寻找 1.jpg 静态资源。
if 指令
语法:if (condition) {…}
上下文:server、location
示例:
if($http_user_agent ~ Chrome){
rewrite /(.*)/browser/$1 break;
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!
准确的说这里又分为两部分:
- Java刷题
- 算法刷题
Java刷题:此份文档详细记录了千道面试题与详解;
道该从何学起的朋友,同时减轻大家的负担。**
[外链图片转存中…(img-2wgHPcHc-1711573937981)]
[外链图片转存中…(img-MJ6ik0Q9-1711573937981)]
[外链图片转存中…(img-WGc54Q6q-1711573937982)]
[外链图片转存中…(img-vCTe0pZA-1711573937983)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
[外链图片转存中…(img-7uysTAoA-1711573937983)]
[外链图片转存中…(img-q1ToCz3X-1711573937984)]
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024b 备注Java获取(资料价值较高,非无偿)
[外链图片转存中…(img-45NkHMW0-1711573937984)]
本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!
[外链图片转存中…(img-THPDq7kr-1711573937985)]
[外链图片转存中…(img-14gIlObn-1711573937985)]
[外链图片转存中…(img-x2g7XCQk-1711573937986)]
[外链图片转存中…(img-YBlzXnhh-1711573937987)]
准确的说这里又分为两部分:
- Java刷题
- 算法刷题
Java刷题:此份文档详细记录了千道面试题与详解;
[外链图片转存中…(img-taR82RDN-1711573937988)]