Linux服务 Nginx(二)

Linux服务 Nginx(二)
    最权威的资料:官方文档http://nginx.org/en/docs/
    
    主配置段的指令:
        正常运行的必备配置;
            1.user USERNAME [GROUPNAME]    指定运行worker进程的用户和组;
                Syntax:    user user [group];
                Default:    user nobody nobody;
                Context:    main
            2.pid /path/to/pid_file        指定nginx守护进程的pid文件;
                Syntax:    pid file;
                Default:    pid logs/nginx.pid;
                Context:    main
            3.worker_rlimit_nofile #        指定所有worker进程多能够打开的最大文件句柄数;
                Syntax:    worker_rlimit_nofile number;
                Default:    —
                Context:    main
                linux系统中用户默认能打开的最大文件数为1024;对于任何一个服务器软件来讲,如果它要监听在某个套接字上,那么任何一个客户端来连接之后,它都会提供一个套接字文件来维持这个连接,linux就是靠这种特性来维持一切皆文件的思想;所以nginx要是同时支持一万个连接连进来,就要创建一万个套接字文件,所以我们要给运行woeker程序的用户身份赋予可以打开更多文件的权限;
        性能优化相关的配置;
            1.worker_processes #        所能够打开的worker进程的个数,通常应该少于CPU物理核心数,至少留一个核心给系统自己使用;支持自动设定;
                Syntax:    worker_processes number | auto;
                Default:    worker_processes 1;
                Context:    main
            2.worker_cpu_affinity cpumask    进行进程与cpu的绑定,可以提高缓存的命中率;但是无法避免context switch(进程的切换会产生CPU不必要消耗);    
                Syntax:    worker_cpu_affinity cpumask ...;
                        worker_cpu_affinity auto [cpumask];
                Default:    —
                Context:    main
            cpumask:
                比如有四个cpu可以这样表示:
                    0001
                    0010
                    0100
                    1000
                例子:
                    worker_processes    4;
                    worker_cpu_affinity 0001 0010 0100 1000;
                    
                    worker_processes    2;
                    worker_cpu_affinity 0101 1010;
                
            3.timer_resolution interval    减少worker进程中的计时器解析度,也就是减少gettimeofday()这个系统调用执行的次数;解析次数越多消耗cpu越多,精准度越高,解析次数越少,消耗cpu越少,精准度越低;
                Syntax:    timer_resolution interval;
                Default:    —
                Context:    main
            4.worker_priority number        指明worker进程优先级;通过设置nice值来调整优先级;
                Syntax:    worker_priority number;
                Default:    worker_priority 0;
                Context:    main
                    nice: -20  -  20,数字越小优先级越高;
        事件相关的配置;
            1.accept_mutex on|off    master调度用户请求至各worker进程时使用的负载均衡锁;on表示让多个worker轮流地去响应新请求;
                Syntax:    accept_mutex on | off;
                Default:    accept_mutex off;
                Context:    evens
            2.lock_file file    accept_mutex用到的锁文件路径;
                Syntax:    lock_file file;
                Default:    lock_file logs/nginx.lock;
                Context:    main
            3.use method    指定使用的事件模型,建议让nginx自动选择;
                method:selece,poll,kqueue,epoll,/dev/poll,eventpoll;
                Syntax:    use method;
                Default:    —
                Context:    events
            4.worker_connections number        单个worker所能够接受的做大并发连接数;
                Syntax:    worker_connections number;
                Default:    worker_connections 512;
                Context:    events
                总共的最大请求并发数=worker_connections * worker_processes    
        用于调试,定位问题的配置;    编译安装是需要开--with-debug,否则设置了这些选项也没用;
            1.daemon on|off        是否以守护进程的方式运行nginx;
                Syntax:    daemon on | off;
                Default:    daemon on;
                Context:    main
            2.master_process on|off    是否以master/worker模型来运行nginx;
                Syntax:    master_process on | off;
                Default:    master_process on;
                Context:    main
            3.error_log 位置 级别        指明错误日志的记录位置;
                    位置:file,stderr,syslog:server=address,memory:size.
                    级别:debug, info, notice, warn, error, crit, alert, or emerg.
                Syntax:    error_log file [level];
                Default:    error_log logs/error.log error;
                Context:    main, http, mail, stream, server, location
        Note:经常需要进程调整的参数:
            worker_processes,worker_connections,worker_cpu_affinity,worker_priority.
        nginx命令:
            -s [stop|quit|reopen|reload]:向nginx传递一个参数;
            
        Nginx作为web服务器时使用的配置;
            http {
            …
            }    :由ngx_http_core_module模块引入,可以实现静态的web服务器功能,就像httpd一样;
             配置框架:
                http {
                    upstream {
                        …
                    }
                    server {
                        location URL {
                            root “/path/to/somedir”;
                            …
                        }    :类似于httpd中的<Location>,用于定义URL与本地文件系统的映射关系;
                        location URL {
                            if … {
                                ...
                            }
                        …
                    }    :这里的server类似于httpd中的<VirtualHost>;
                    server {
                        …
                    }
                    
                Note:与http相关的指令,必须放在server{},location{},if{},upstream{}中,但有些指令只能应用于这五种上下文中的某些种;
            配置指令:
                1.server{}:定义一个虚拟主机;
                例子:
                 mkdir -pv /vhosts/web1
                vim /vhosts/web1/index.html
                    <h1>web1</h1>
                server {
                    listen 8080;
                    server_name www.guowei.com;
                    root "/vhosts/web1";
                }
                然后重启nginx服务,如果显示:nginx: [error] invalid PID number "" in "/var/run/nginx/nginx.pid"的话;执行nginx -c /etc/nginx/nginx.conf即可,次条命令是重新指定nginx的配置文件;
                netstat -nultp | grep 80
                tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      2932/nginx          
                tcp        0      0 0.0.0.0:80                    0.0.0.0:*                   LISTEN      2932/nginx  
                浏览器键入:http://192.168.102.128:8080
                2.listen :指定监听的地址以及接口;
                    Syntax:    listen address[:port] ;
                            listen port ;
                            listen unix:path ;→指定其监听在unix的sock上,如果设置此项则客户端只能是本机;
                    Default:    listen *:80 | *:8000;
                    Context:    server
                    例子:
                        listen 0.0.0.0:80;
                        listen 8080;
                        listen unix:/var/run/nginx.sock;
                3.server_name name […] :指定主机名,后可跟多个主机名,名称还可以使用正则表达式(使用正则时用”~”开头)或通配符;
                    Syntax:    server_name name ...;
                    Default:    server_name "";
                    Context:    server
                    例子:
                        server {
                            server_name example.com *.example.com www.example.*;
                        }
                    当有多个server{}时,就会有多个server_name且其中有几个都符合匹配条件时,这时会按照一定的规则进行先后匹配:精确匹配(www.google.com)→ 左侧通配符匹配(*.google.com)→ 右侧通配符匹配(mail.*)→ 正则表达式匹配(~^.*\.google\.com$)→ 默认服务器(default_server).
                4.root path :设置资源路径映射关系,用于指明请求的URL所对应的资源所在的文件系统上的起始路径;
                    Syntax:    root path;
                    Default:    root html;
                    Context:    http, server, location, if in location
                5.location {} :允许根据用户请求的URI来匹配定义的各location;匹配到时,此请求将被相应的location配置块中的配置所处理,例如:做访问控制等功能;一个server{}中可以有多个location{};
                    Syntax:    location [ = | ~ | ~* | ^~ ] uri { ... }
                            location @name { ... }
                    Default:    —
                    Context:    server, location
                        = :精确匹配;
                        ~ :正则表达式模式匹配,区分字符大小写;
                        ~* :正则表达式模式匹配,不区分字符大小写;
                        ^~ :URI的前半部分匹配,不支持正则表达式;
                        匹配优先级:=→ ^~→ ~→ ~*→ 无特殊符号的路径;
                    例子:
                        server {
                            listen 80;
                            server_name www.guowei.com;
                            location / {
                                root “/vhosts/web1”;
                            }    :表示当访问www.guowei.com时,其实访问的是www.guowei.com/vhosts/web1/
                            location /images/ {
                                root “/vhosts/”;
                            }    :表示当访问www.guoei.com/images时,其实访问的是www.guowei.com/vhosts/images/
                            location ^~ /images/ {
                                [ configuration D ]
                            }
                            location ~* \.(gif|jpg|jpeg)$ {
                                [ configuration E ]
                            }
                        }    例子:当访问/images/1.gif时,就会优先匹配第三个;
                6.alias path :定义路径别名;
                    Syntax:    alias path;
                    Default:    —
                    Context:    location
                    Note:root表示指明路径为对应的location “/”URL也就是说location后面的路径是直接接在root路径后的;ailas表示路径映射,即location指令后定义的URL是相对alias所指明的路径而言,也就是直接使用alias后面的路径取代location后面的路径;注意:如果location中的路径以”/”结尾,则alias中的路径也要以”/”结尾;
                7.index file :  设置主页面格式;由ngx_http_index_module提供;
                    Syntax:    index file ...;
                    Default:    index index.html;
                    Context:    http, server, location
                8.error_page :根据http的响应状态码为其提供专门的信息提示页面(200,404等);
                    = :表示将一种响应状态码改变成另一种状态码
                    例子:error_page 404 =200 /empty.gif;   将404变成200,然后显示/empty.gif这个图片;
                    Syntax:    error_page code ... [=[response]] uri;
                    Default:    —
                    Context:    http, server, location, if in location
                9.基于IP的访问控制:由ngx_http_access_module提供;
                    allow
                        Syntax:    allow address | CIDR | unix: | all;
                        Default:    —
                        Context:    http, server, location, limit_except
                    deny
                        Syntax:    deny address | CIDR | unix: | all;
                        Default:    —
                        Context:    http, server, location, limit_except
                    例子:
                        location / {
                            deny  192.168.1.1;
                            allow 192.168.1.0/24;
                            allow 10.1.1.0/16;
                            allow 2001:0db8::/32;
                            deny  all;
                        }
                10.基于用户的访问控制:由ngx_http_auth_basic_module提供;
                    auth_basic string :展示一些提示信息;
                        Syntax:    auth_basic string | off;
                        Default:    auth_basic off;
                        Context:    http, server, location, limit_except
                    auth_basic_user_file file :提供帐号密码文件;
                        Syntax:    auth_basic_user_file file;
                        Default:    —
                        Context:    http, server, location, limit_except
                    Note:建议使用
                        例子:
                            location / {
                                    root "/vhosts/web1/";
                                 auth_basic "Only VIP do it!";
                                    auth_basic_user_file /etc/nginx/users/.htpasswd;
                               }
                            mkdir /etc/nginx/users
                            htpasswd -c -m /etc/nginx/users/.htpasswd guowei
                            浏览器键入:http://192.168.102.128:8080
                11.https服务: 由ngx_http_ssl_module提供;
                    生成私钥,生成证书签署请求,并获得证书;
                        server {
                            listen       443 ssl;
                            server_name  localhost;

                            ssl_certificate      cert.pem;  证书文件位置;
                            ssl_certificate_key  cert.key; 私钥文件位置;

                            ssl_session_cache    shared:SSL:1m;
                            ssl_session_timeout  5m;

                            ssl_ciphers  HIGH:!aNULL:!MD5;
                            ssl_prefer_server_ciphers  on;

                            location / {
                                root   html;
                                index  index.html index.htm;
                            }
                        }
                12.stub_status on|off: 状态页;
                    Syntax:    status;
                    Default:    —
                    Context:    location
                    例子:
                        location /status {
                                    stub_status on;
                                    allow 192.168.102.0/24;
                                    deny all;
                            }
                        浏览器键入:http://192.168.102.128:8080/status
                        Active connections: 2      活动连接数;
                        server accepts handled requests    
                         12 12 23     已经接受的连接    已经处理的连接    处理的请求
                        Note:在保持连接模式下,请求数量可能会多于连接数量;
                        Reading: 0 Writing: 1 Waiting: 1     
                        Reading:正处于接收状态的的连接数;
                        Writing: 请求已经接收完成,正处于处理请求或发送响应的过程中的连接数;
                        Waiting:保持连接模式,且处于活动状态的连接数;
                13.rewrite regex replacement [flag] :实现URL重写;
                    Syntax:    rewrite regex replacement [flag];
                    Default:    —
                    Context:    server, location, if
                    flag:
                        last :重新匹配被重写的URL;URL被重写后,浏览器会使用新的URL重新向服务器发起请求,这个新的URL还会经过rewrite匹配;所以编写rewrite时注意不要形成循环;
                        break :一旦URL重写后,不会再匹配本location中的任何其他规则;
                        redirect :以302响应码(临时重定向),返回新的URL; replacrmen为http://XXXXXX
                        permanent :以301响应码(永久重定向),返回新的URL;
                    例子:rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra  last;
                        http://www.guowei.com/download/audio/file → http://www.guowei.com/download/mp3/file.ra  
                14.if :条件判断;
                    Syntax:    if (condition) { ... }
                    Default:    —
                    Context:    server, location
                    condition:
                        1.变量名:如果变量值为空字符串或者为0,则为false,否则为true;
                        2.以变量为操作数,构成的比较表达式;
                            =,!=等;
                        3.正则表达式的模式匹配操作;
                            ~ :区分字符大小写的匹配检查;
                            ~* :不区分字符大小写的匹配检查;
                            !~和!~*:对上面两种规取反;
                        4.测试文件的存在性;
                            -f , !-f;
                        5.测试指定路径是否为目录;
                            -d , !-d;
                        6.测试文件的存在与否;
                            -e , !-e;
                        7.检查文件是否有执行权限;
                            -x , !-x;
                        例子:
                            if ($http_user_agent ~ MSIE) {
                                rewrite ^(.*)$ /msie/$1 break;
                            }
                                Note:MSIE为客户端的浏览器类型;
                            if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
                                set $id $1;
                            }
                15.防盗链;
                    location ~* \.(jpg|gif|jpeg|png)& {
                        vaild_referer none blocked www.guowei.com;   指定授权网址;
                        if ($invalid_referer) {
                            rewrite ^/ http://www.guowei.com/403.html;
                        }
                    }
                16.定制访问日志格式:
                    Syntax:    log_format name [escape=default|json|none] string ...;
                    Default:    log_format combined "...";
                    Context:    http
                    例子:
                    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                             '$status $body_bytes_sent "$http_referer" '
                                      '"$http_user_agent" "$http_x_forwarded_for"';
                    access_log  logs/access.log  main;
                    Note:此处可用变量为nginx各模块内置变量;
        网络连接相关的配置;
            1.keepalive_timeout number :长连接的超时时长;
            2.keepalive_requests number :在一个长连接上所能够允许请求的最大资源数;
            3.keepalive_disable [msie6|safari|none] :为指定类型的user_agent禁用长连接;
            4.tcp_nodelay on|off :
                tcp相对来说是一种开销比较大的连接类型,因为任何一个连接建立拆除,都要经过三次握手建立连接和四次挥手断开连接,如果我们要请求很多小的数据,那么我们付出的代价就会很大,有大量的资源被浪费掉,所以tcp在其拥塞避免算法中提供可一个机制:将小的数据合并成一个大的数据再发送;但是有的时候我们又不能等待这中延时,所以是否使用要根据情况确定,on表示不合并,off表示合并;
            5.client_header_timeout number :指定读取http请求报文首部的超时时长;
            6.client_body_timeout number :指定读取http请求报文的body部分的超时时长;
            7.send_timeout number :指定发送响应报文的超时时长;
            

            注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删;

转载于:https://www.cnblogs.com/guowei-Linux/p/11072869.html

Ubuntu 22.04下Minkowski Engine编译避坑指南:解决Cuda 12.2与Pytorch cu118版本冲突 本文详细介绍了在Ubuntu 22.04系统中解决Minkowski Engine编译时Cuda 12.2与Pytorch cu118版本冲突的实用方法。通过修改版本检查逻辑、创建兼容符号链接等技巧,帮助开发者顺利完成编译,并提供了性能优化建议和替代方案,确保三维点云处理任务的高效运行。 阅读详情

相关推荐

SAP EWM 内向交货流程(一)

本文介绍了SAP EWM系统中内向交货单的基本配置与操作流程。

huqinghai的专栏 2349

linux tcp服务器连接状态,Linux服务器当前各种TCP网络连接状态的统计

例如服务器上的TCP网络连接状态显示如下:[root@www.linuxidc.com ~]# netstat -natActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp...

weixin_34284072的博客 518

安防天下:智能网络视频监控技术详解与实践.pdf

第1章 视频监控技术概述 1第2章 模拟视频监控系统 13第3章 视频编码压缩技术 43第4章 硬盘录像机(dvr)技术 87第5章 视频编码器技术 131第6章 网络录像机(nvr)技术 163第7章 网络摄像机(ipc)技术 197第8章 高清视频监控技术 233第9章 视频内容分析(vca)技术 253第10章 网络视频传输与交换 297第11章 中央管理软件(cms) 329第12章 视频监控系统存储应用 403第13章 视频解码与图像显示 455第14章 智能网络视频系统实战 465第15章 ivs在不同行业的应用 479

Nginx入门学习

Nginx 尚硅谷Nginx教程(nginx快速上手) 1、基础概念 Nginx的定义 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 Nginx转为性能优化开发! 反向代理 正向代理:客户端(浏览器)配置代理服务器地址进行代理 反向代理 正向代理代理客户端,反向代理代理服务器 负载均衡 动静分离 把动态资源和静

weixin_39664643的博客 610

Linux】之查看和解除端口占用

1、安装 netstat 命令(如果没有安装的话): yum install -y netstat 2、查看端口是否被占用: netstat -tunlp | grep 8080 -------------------------- tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1232/docker-proxy 参数介绍: -a:显示所有选项,默认不显示 *LISTEN 相关; -t:仅显示 tcp 相关选项; -u:仅显示 udp

王廷云的博客 5847

centos7 查看端口命令rpm -aq| netstat -lnp|grep 80

rpm -aq| netstat -lnp|grep 80 80是端口 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 15698/java tcp 0 0 0.0.0.0:8081 0.0.0.0:* ...

weixin_30552635的博客 288

检查 TCP 80 端口是否正常工作

如果你的实例无法对外提供 HTTP 服务,你可以按以下步骤检查 Web 服务相关的接口(默认为 TCP 80)是否正常工作: 1、在 ECS 管理控制台,确认安全组已经放行该端口。 2、远程连接 ECS 实例,确认服务已经开启。 3、确认端口正常被监听。如没有,请修改监听地址。 4、确认实例防火墙已经放行服务。 5、如仍无法解决,请提交工单咨询。 我们将分别介绍在不同操作系统中如何检查...

wang645372816的专栏 6348

搭建图片服务器《linux安装nginx

搭建图片服务器《》-linux安装nginxhttps://blog.csdn.net/maoyuanming0806/article/details/78067446nginx是个好东西,Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第的Rambler.ru站点(俄文:Рамб...

rede 2022

Linux服务nginx服务(搭建)

一、简易搭建安装步骤 0.检查环境 1.配置yum源 使用yum list nginx 检查yum源中是否有nginx安装包 #官方网络源需要安装epel-* #或使用251的adv源(老师的yum源) #################### [base] name=base baseurl=http://172.16.105.251/base enabled=1 gpgc...

weixin_30666753的博客 110

Linux系统Nginx服务

SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,安全传输层协议)是用于保障网络通信安全的协议,主要提供私密性、信息完整性和身份认证。TLS 是 SSL 的升级版,目前广泛应用于 HTTPS 协议中。

ZYMFZ的博客 431

搭建图片服务器《》-linux安装nginx

nginx是个好东西,Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第的Rambler.ru站点(俄文:Рамблер)开发的。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占

maoyuanming0806的博客 10万+

Linux服务器开发——Nginx服务器配置

目录 虚拟主机 Nginx配置 nginx结构 添加工作进程worker 配置文件解析 配置负载均衡 配置重定向url 虚拟主机 配置文件地址:/usr/local/nginx/conf/nginx.conf 有效信息只有开头到location{}处,大括号之后的部分可以删除掉,文件末尾大括号不要删除。如下图 server 代表一个主机,新建一个server代表新建一...

qq_25490573的博客 484

nginx配置静态资源linux,nginx(、安装及配置静态资源服务)

第一篇和这篇的时间跨度有点大,间隔了快2个月。因为中间加急搞了一个jenkins自动化构件的东西,然后工厂又提了个蓝牙Ibeacon测距的需求,做了个demo让他们去做实验,现在终于有时间把这个nginx来实际操作一下了。一、安装去官网 下载 Nginx,以Stable version为例。[root@centos]# yum install yum-utils[root@centos]# vim...

weixin_42321496的博客 412

GWMON和DPMON

netstat -ano|grep 3300 输出 tcp 0 0 0.0.0.0:3300 0.0.0.0:* LISTEN off (0.00/ 0/0) tcp 0 0 10.XX.XX.XX:3300 10.XX.XX.XX:42132 ESTABLISHED keepalive (721.61/0/0) unix 2

qq_41468794的博客 494

Docker 安装 Tomcat

Docker 安装Tomcat背景Docker 安装Tomcat启动Tomcat普通启动挂载启动重启,删除 服务 参考自https://blog.csdn.net/oabcde12/article/details/79268429 背景 Docker 安装完成后,便开始了Docker 之旅,本次从在Docker 安装Tomcat中,主要的目的是接触Docker 命令,从而达到对Docker 的学习...

qq_34125349的博客 240

Linux netstat 查看端口号连接数

查看8080端口连接情况netstat -an |grep 8080 #结果 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN tcp 0 0 172.16.20.243:8080 117.61.130.7:19521 ESTABLISHED tc

小虎哥的技术博客 2097

网络安全学习--WEB服务

WEB服务器 web服务器称为网页服务器或HTTP服务器 web服务器使用的协议是HTTP或HTTPS HTTP协议端口号:TCP 80;HTTPS协议端口号:TCP 443 WEB服务器发布软件 微软:IIS(可以发布web网站和FTP站点) LINUX:Apache/LAMP/Tomcat/Nginx等 第三方:phpstudy,xampp 部署WEB服务器 安装IIS服务 安装完成后,查看端口80已打开 C:\Documents and Settings\Administrator&

丢爸 3248
上一篇: Linux服务 Nginx(一)
下一篇: Linux LVS集群
dingcong4061
博客等级 码龄10年 1粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值