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

   日期:2024-12-24     作者:5pv2g       评论:0    移动:http://mip.riyuangf.com/mobile/news/7707.html
核心提示:user USERNAME [GROUP] user nginx lion; # 用户是 Nginx;组是 lion pid 指定运行 Nginx master 主进程的 pid 文件存放路

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开发知识点,真正体系化

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

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

  1. Java刷题
  2. 算法刷题

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)]

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

  1. Java刷题
  2. 算法刷题

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

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

 
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0评论 0
 
更多>同类最新资讯
0相关评论

相关文章
最新文章
推荐文章
推荐图文
最新资讯
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号