nginx详细介绍说明&&nginx安装方法详细&&nginx常用命令使用

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 www.nginx.com ;

  • 左侧通配:server_name *.nginx.com ;

  • 右侧统配:server_name www.nginx.*;

  • 正则匹配:server_name ~^www\.nginx\.*$ ;

匹配优先级:精确匹配 > 左侧通配符匹配 > 右侧通配符匹配 > 正则表达式匹配

server_name 配置实例:


1、配置本地 DNS 解析 vim /etc/hosts (macOS 系统)

添加如下内容,其中 121.42.11.34 是阿里云服务器 IP 地址

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

这里只列举了 http 端中的 sever 端配置

左匹配

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;

只有当访问 www.nginx-test.com/match_all/ 时才会匹配到/usr/share/nginx/html/match_all/index.html

location = /match_all/ {

root /usr/share/nginx/html

index index.html

}

当访问 www.nginx-test.com/1.jpg 等路径时会去 /usr/share/nginx/images/1.jpg 找对应的资源

location ~ .(jpeg|jpg|png|svg)$ {

root /usr/share/nginx/images;

}

当访问 www.nginx-test.com/bbs/ 时会匹配上 /usr/share/nginx/html/bbs/index.html

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工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

img
img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024b 备注Java获取(资料价值较高,非无偿)
img

独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

image

image

image

image

Java面试准备

准确的说这里又分为两部分:

  1. Java刷题
  2. 算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

image

image

道该从何学起的朋友,同时减轻大家的负担。**
[外链图片转存中…(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面试准备

准确的说这里又分为两部分:

  1. Java刷题
  2. 算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

[外链图片转存中…(img-taR82RDN-1711573937988)]

[外链图片转存中…(img-DT84y9lS-1711573937988)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值