前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx配置段(3)

Nginx配置段(3)

作者头像
py3study
发布于 2020-01-10 09:20:07
发布于 2020-01-10 09:20:07
58100
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
安装方法:
    rpm及源码安装:
    # ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi
    # make && make install

    Tmalloc, gperftools

配置段: nginx: main配置段 http { }

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http配置:http core 配置一个静态web服务器
    ngx_http_core_module

    配置框架:
    http {
        upstream {
            .,..
        }

        server {
            listen IP:PORT;
            # 虚拟主机
            location /URL {
                if ...{
                    ...
                }    #类似于httpd中的<Location>,用于定义URL与本地文件系统的映射关系;
                root "/path/to/somewhere";
                ...
            }  
        }       #每个server类似于httpd中的一个<VirtualHost>

        server {
            ,,. 
        }  
    }

        注意:与http配置相关的指令必须放在http、server、location、upstream、if块中;

    虚拟主机相关的配置:
        1、server {}
            定义一个虚拟主机;

            server {
                listen 8080;
                server_name www.zhanx.wang;
                root "/vhosts/web1";
            }

        2、listen
            监听的端口
            完整格式 :listen address[:port] [default_server] [ssl] [spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

            listen address[:port] [default_server] ssl 

            backlog=number: 指明TCP协议backlog队列的大小。默认为-1,表示不设置;
            rcvbuf=size:设定监听句柄的SO_RCVBUF参数;

            例如:
                listen 172.16.100.8:8080

        3、server_name name [...];
            后可跟多个主机名;名称还可以使用通配符和正则表达式(~);

            (1) 先做精确匹配;www.zhanxwang: 
            (2) 左侧通配符匹配,例如:*.zhanx.wang; 
            (3) 右侧通配符匹配,例如:www.*
            (4) 正则表达式匹配,例如: ~^.*\.zhanx\.wang$
            (5) default_server

        4、location [=|~|~*|^~] /uri {...}
            location @name
            功能:允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理;

                =: 精确匹配检查;
                ~: 正则表达式模式匹配,区分字符大小写;
                ~*:正则表达式模式 匹配,不区分字符大小写;
                ^~URI的前半部分匹配,不检查正则表达式;

            匹配优先级:精确匹配(=)^~~~*、由不带符号的URL进行左侧匹配;

            server {
                listen 80
                server_name www.zhanx.wang
                location / {
                        root "/vhosts/web1";
                    }

                location /images/ {
                        root "vhosts/images";
                    }

                location ~*\.php${
                        fcgipass
                    }
                }

        5、root
            设置web资源路径映射;用于指明请求的URL所对应的文档的根目录路径;

            location /images/ {
                root "/web/imgs/";
            }

        6、alias path
            用于location配置段,定义路径别名 

            location /images/ {
                alias /www/pictures/;
            }
            http://www.zhanx.wang/image/a.jpg  <--- /www/pictures/a.jpg

            注意:root表示指明路径为对应location的“ /URL;
            alias表示路径映射,即location中的URL是相对于alias所指明的路径而言;

        7、index file
            默认主页面
                index  index.php  index.html; 

        8、error_page code [...] [=code] URI | @name
            根据http状态码重定向错误页面
            error_page  404   /404.html

            =[code]: 以指定的响应码进行响应;省略code表示以新资源的响应码为响应码;

        9、try_files
            try_files path1[,path2,...] URI 

        10、基于IP地址的访问控制;
            allow IP/Network;
            deny  IP/Network;

        11、基于用户的访问控制;
            basic,digest

            auth_basic  "";
            auth_basic_user_file "/PATH/TO/PASSWORD_FILE"
                账号密码文件建议使用htpasswd来创建;

        12、https服务
            生成私钥

        13、stub_status {on|off};
            仅能用于location上下文;

            location /status {
                stub_status on;
                allow 172.16.0.0/16;
                deny  all;
            }

            结果示例:

            Active connection: 6 #当前所有处于打开状态的连接数;
            server accepts handled requests
            241    241     4311)已经接受的连接
            (2)已经处理过的连接数
            (3)已经处理过的请求数:在“保持连接”模式下,请求数量可能会多于连接数量;
            Reading:0 Writing:1 Waiting:5
                Reading:正处于接收请求状态的连接数;
                Writing:请求已经接收完成,正在处理请求或发送响应的过程中的连接数;
                waiting:保持连接模式,且处于活动状态的连接数;

        14、rewrite regex replacement flag;

            例如:
                ...
                rewrite ^/images/(.*\.jpg)$ /imgs/$1 last;
                rewrite ^/imgs/(.*\.jpg)$ /images/$1 last;

                ...
                rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;
                ...

                http://www.zhanx.wang/image/a/b/c/1.jpg --> /imgs/a/b/c/1.jpg

            flag:
                last:一旦此rewrite规则重写完成后,就不再被后面其它的rewrite规则进行处理,而是由user
                    Agent重新对重写后的url再一次发起请求,并从头开始执行类似的过程
                break:一旦此rewrite规则重写完成后,由user 
                    Agent 对新的URl重新发起请求,且不再会被当前location内的任何rewrite规则所检查
                redirect:以302响应码(临时重定向)返回新的URL;
                permanent:以301响应码(永久重定向)返回新的URL15if
            语法:if(condition){...}
            应用环境: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;
                }

        16、防盗链
            location ~* \.(jpg|gif|jpeg|png)$ {
                valid_referer none blocked www.zhanx.wang
                if ($invalid_referer) {
                    rewrite ^/ http://www.zhanx.wang/403.html      #(盗链提示)
                }
            }

        17、定制访问日志格式
                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  /var/log/nginx/access.log  main;

            注意:此处可用变量为Nginx各模块内建变量;

    网络连接相关的配置:
        1、keepalive_timeout time;
            保持连接的超时时长,默认为75s;

        2、keepalive_requests #;
            在一次保持连接上允许承载最大资源请求数;

        3、keepalive_disable [msie6|safari|none]
            为指定类型的浏览器禁用长连接;

        4、tcp_nodelay on|off
            对长连接是否使用TCP_NODELAY选项;

        5、client_header_timeout time;
            读取http请求报文首部的超时时长;

        6、client_body_timeout time;
            读取http请求报文body部分的超时时长;

        7、send_timeout time;
            发送响应报文的超时时长;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx篇--解读nginx配置
之前讲解了Nginx的源码安装与加载到系统服务中去,http://www.cnblogs.com/LHWorldBlog/p/8298226.html 今天详细讲解Nginx中的具体配置。
LhWorld哥陪你聊算法
2018/09/13
1.9K0
Nginx篇--解读nginx配置
Nginx系列(三):nginx配置域名转发、反向代理、负载均衡
当表达式只是一个变量时,如果值为空或任何以0开头的字符串都会当做false直接比较变量和内容时,使用=或!=~正则表达式匹配,~*不区分大小写的匹配,!~区分大小写的不匹配 2. 全局环境变量
鳄鱼儿
2024/05/21
17.7K0
Nginx ngx_http_core_module模块详解(三)
这里只写了几个ngx_http_core_module 模块参数更多请参考官网 地址链接
咻一咻
2020/05/29
9930
nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案。nginx可以用轮询、IP哈希、URL哈希等方式调度后端服务器,同时也能提供健康检查功能。目前有众多公司均已经部署使用nginx实现基于七层的负载均衡功能。 1)Nginx负载均衡 为了实现Nginx的反向代理以及负载均衡功能,应用中需要用到两个模块,HttpProxyModule和HttpUpstreamModule模块;其中HttpProxyModule模块的作用是将用户的数据请求转发到其他服
洗尽了浮华
2018/01/23
8K0
nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
建议收藏 | 彻底搞懂 Nginx 的五大应用场景
导读:Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。
码农架构
2021/07/09
1K0
建议收藏 | 彻底搞懂 Nginx 的五大应用场景
手把手教你,嘴对嘴传达------深入介绍Nginx的rewrite模块(理论加实验)
location = patt {} [精准匹配] ocation patt {} [一般匹配 ] location ~ patt {} [正则匹配]
不吃小白菜
2020/09/03
7160
手把手教你,嘴对嘴传达------深入介绍Nginx的rewrite模块(理论加实验)
Nginx常见配置
http请求无法立即被容器(tomcat, netty等)处理,被放在nginx的待处理池中等待被处理。
码客说
2020/05/09
1.3K0
003.Nginx原理和配置
1. Nginx原理 对于每个Worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销 采用独立的进程,互相之间不会相互影响,一个进程退出后,其他进程还在工作,服务不会中断,master进
CoderJed
2020/04/09
4710
nginx配置 location及rewrite规则详解
1. location正则写法 语法规则: location [=|~|~*|^~] /uri/ { … } =    开头表示精确匹配 ^~  开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。 ~   开头表示区分大小写的正则匹配 ~*  开头表示不区分大小写的正则匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则 / 通用匹配,任何请求都会匹
用户1214487
2018/05/28
2.9K0
Nginx rewrite正则匹配重写
Nginx的rewrite功能支持正则匹配重写,即将URL地址临时或永久重新指向某个新的位置,类似于重定向。这个特性有利用当网站结构做出重大调整,如之前的网站mp3资源使用URL为www.site1.org/mp3进行访问,而现在服务器上mp3目录已经被使用music目录替换,那rewrite这个功能则能够轻松实现。其次如可以将site1.org强制调整到www.site1.org,反之亦可。这个指令位于ngx_http_rewrite_module模块。本文主要描述这个指令的用法并给出演示。
Leshami
2018/08/06
2.3K0
Nginx 配置详解
地址重写:为了标准化网址,比如输入baidu.com和www.baidu.com,都会被重写到www.baidu.com,而且我们在浏览器看到的也会是 www.baidu.com
白墨石
2022/05/11
6.4K0
nginx Server 节点常用指令
file 除了在物理机上的位置,还可以使用syslog: 和 memory: 配置。
啵啵肠
2023/11/20
2420
nginx域名访问的白名单配置梳理
在日常运维工作中,会碰到这样的需求:设置网站访问只对某些ip开放,其他ip的客户端都不能访问。可以通过下面四种方法来达到这种效果: 1)针对nginx域名配置所启用的端口(比如80端口)在iptables里做白名单,比如只允许100.110.15.16、100.110.15.17、100.110.15.18访问.但是这样就把nginx的所有80端口的域名访问都做了限制,范围比较大! [root@china ~]# vim /etc/sysconfig/iptables ...... -A INPUT -s
洗尽了浮华
2018/01/23
11.5K0
BFE和Nginx有什么差异?- 转发模型的对比
提示:本文较长,且涉及部分配置,点击文章最下方的“阅读原文” 在手机或PC上查看,效果更佳。点击“阅读原文” 还可以留言或发表评论。
CNCF
2021/08/26
8560
BFE和Nginx有什么差异?- 转发模型的对比
Nginx的location配置规则梳理
Nginx几乎是当下绝大多数公司在用的web应用服务,熟悉Nginx的配置,对于我们日常的运维工作是至关重要的,下面就Nginx的location配置进行梳理: 1)location匹配的是nginx
洗尽了浮华
2018/01/23
2.1K0
Nginx配置location总结及rewrite规则写法
location = / {     # 精确匹配 /,主机名后面不能带任何字符串     [ configuration A ]  } location / {     # 因为所有的地址都以/开头,所有这条规则将匹配到所有请求     # 但是正则和最长字符串会优先匹配     [ configuration B ] } location /documents/ {     # 匹配任何以/documents/开头的地址,匹配符合以后,还要继续往下搜索     # 只有后面的正则表达式没有匹配到时,这一条才会采用     [ configuration C ] } location ~ /documents/Abc {     # 匹配任何以 /documents/开头的地址,匹配符合以后,还要继续往下搜索     # 只有后面的正则表达式没有匹配到时,才会采用这一条      [ configuration CC ] } location ^~ /images/ {     # 匹配任何以/images/开头的地址,匹配符合以后,停止往下搜索正则,采用这一条     [ configuration D ] } location ~* \.(gif|jpg|jpeg)$ {     # 匹配所有以gif,jpg或jpeg结尾的请求     # 然而,苏朋友请求/images/下的图片会被config D处理,因为^~到达不了这一正则     [ configuration E ] } location /images/ {     # 字符匹配到 /images/,继续往下,会发现^~存在     [ configuration F ] } location /images/abc {     # 最长字符匹配到/images/abc,继续往下,会发现^~存在     # F与G的放置顺序是没有关系的     [ configuration G ] } location ~ /images/abc/ {     # 只有去掉config D才有效:先最长匹配config G开头的地址,继续往下搜索,匹配到这一正则,采用     [ configuration H ] } location ~* /js/.*/\.js
星哥玩云
2022/07/29
1.1K0
nginx配置自定义变量实现日志动态分发
Nginx是一个异步框架的 Web服务器,也可以用作反向代理,负载平衡器 和 HTTP缓存。下载地址:www.nginx.org。
神秘的寇先森
2018/12/07
5.1K0
nginx 模块详解
worker_processes number | auto; worker进程的数量;通常应该为当前主机的cpu的物理核心数 worker_cpu_affinity auto [cpumask] #将work进程绑定在固定cpu上提高缓存命中率 例: worker_cpu_affinity 0001 0010 0100 1000; worker_cpu_affinity 0101 1010; worker_priority number 指定worker进程的nice值,设定worker进程优先级: [-20,20]    worker_rlimit_nofile number worker进程所能够打开的文件数量上限,默认较小,生产中需要调大如65535
星哥玩云
2022/07/26
1.9K0
nginx 模块详解
Nginx专题: 从编译安装到URL重写
前言 本文主要实现使用Nginx作为Web服务器,并使用URL Rewrite实现将手机对Web站点的请求专门重写到一个专门为手机定制的Web页面中。 环境介绍 笔者只有一台虚拟机, 桥接到室内的路由器便于手机进行访问, IP地址为192.168.1.103。 Nginx介绍 engine x发音同Nginx,作者是Igor Sysoev,是目前世界上占有率第三的Web服务器软件. Nginx是一款轻量级的Web服务器,可实现反向代理,URL rewrite等功能。 Nginx拥有消耗内存小、可支持高并发连
小小科
2018/05/03
1.2K0
Nginx专题: 从编译安装到URL重写
Nginx应用场景
systemd服务文件以.service结尾。如果用yum install命令安装的,yum命令会自动创建nginx.service文件可以直接使用systemctl相关命令。而用源码编译安装的,则需要手动创建nginx.service服务文件。
1neptune
2022/11/22
3K0
相关推荐
Nginx篇--解读nginx配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验