nginx配置文件结构1

nginx配置文件结构

main:

user nginx;        进程发起的用户名    
worker_processes auto;        进程数量auto为物理核心数量
error_log /var/log/nginx/error.log; 错误日志位置
pid /run/nginx.pid;                   主进程文件号的文件位置     
include /usr/share/nginx/modules/*.conf;    启动的模块
worker_processes auto; 的优化,可以把进程绑定固定核心减少上下文切换的消耗

CPU MASK:

00000000:

0000 0001:0号CPU

0000 0010:1号CPU

0000 0100:2号CPU

... ...

0000 0011:0和1号CPU;

worker_priority number;

指定worker进程的nice值,设定worker进程优先级;[-20,20]

worker_rlimit_nofile number;

worker进程所能够打开的文件数量上限;

调试、定位问题:

1、daemon on|off;

是否以守护进程方式运行Nignx;

2、master_process on|off;

是否以master/worker模型运行nginx;默认为on;

3、error_log file [level];

事件驱动相关的配置:

events {

...

}

1、worker_connections number;

每个worker进程所能够打开的最大并发连接数数量;

worker_processes * worker_connections

2、use method;

指明并发连接请求的处理方法;

use epoll;

3、accept_mutex on | off;

master 用户请求到worker进程时使用负载均衡锁,序列化的响应请求

处理新的连接请求的方法;on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程;

accept_mutex_delay time;worker忙碌其他请求等待时间

events {
    worker_connections 1024;
        use epoll;
        accept_mutex on;
}

定义四个虚拟主机,混合使用三种类型的虚拟主机;

仅开放给来自于本地网络中的主机访问;

定义4个虚拟主机:

(1) 首先是字符串精确匹配;

(2) 左侧*通配符;

(3) 右侧*通配符;

(4) 正则表达式;

server {
        listen       80 default_server;
        server_name  bbs.momoda1.com;
        root         /var/www/html/bbs;
        include /etc/nginx/default.d/*.conf;
}
   server {
        listen 80;               
        root "/var/www/html/momoda1";
        server_name *.memeda1.com;
        include /etc/nginx/default.d/*.conf;
}
   server {
        listen 80;
        root "/var/www/html/ms/";
        server_name www.memeda1.*;
        include /etc/nginx/default.d/*.conf;
}
   server {
        listen 80;
        root "/var/www/html/re";
        server_name ~.*\.\d+\.com;
        include /etc/nginx/default.d/*.conf;
}

定义页面内容

配置本地dns解析

C:\Windows\System32\drivers\etc\hosts

192.168.91.133      bbs.momoda1.com momoda1.com www.momoda1.com www.158.com www.momoda1.cn

验证:

memeda1.com

server_name  www.momoda1.com;
        root      /var/www/html/;
        include /etc/nginx/default.d/*.conf;
        location  /ms {
        root /var/www/html/mems;
}

访问servername/ms时候相当于访问root /var/www/html/mems/ms下对应内容

指定匹配uri的root目录

[[email protected] www]# curl www.momoda1.com/ms/xx.html
<h1>this is mems/xx.html</h1>
        location ~.*\.jpg {
        root /var/www/images;
}
        location /msf/ {
        alias  /mems/;
}
[[email protected] www]# curl www.momoda1.com/msf/xx.html
<h1>this is mems/xx.html</h1>

对servername/msf/下内容对应到指定目录下

http:/  <--- /var/www/images

    location /images/ {
        alias "/var/www/images"
        }
location后跟对应的uri,在访问指定的uri时,root路径是location定义的root/uri
而alias则是在location中定义的位置

client_body_temp_path path [level1 [level2 [level3]]];

设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量;

16进制的数字;

client_body_temp_path   /var/tmp/client_body  1 2 2

1:表示用一位16进制数字表示一级子目录;0-f

2:表示用2位16进程数字表示二级子目录:00-ff

2:表示用2位16进程数字表示三级子目录:00-ff

ngx_http_access_module模块:

实现基于ip的访问控制功能

allow address | CIDR | unix: | all;

deny address | CIDR | unix: | all;

定义位置             http, server, location, limit_except

loaction / {
allow 171.16.0.0/16
allow 192.16.0.0/16
denny all
}

ngx_http_auth_basic_module模块

实现基于用户的访问控制,使用basic机制进行用户认证;

location  /  {
        auth_basic "input you passwd";
        auth_basic_user_file /etc/htpasswd;
      }
[[email protected] html]# yum install httpd-tools
[[email protected] html]# htpasswd -c -m /etc/htpasswd momoda
New password:
Re-type new password:
Adding password for user momoda
[[email protected] html]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[[email protected] html]# nginx -s reload

ngx_http_stub_status_module模块

用于输出nginx的基本状态信息;

location /status {
      stub_status;
        }

结果

[[email protected] www]# curl www.momoda1.com/status
Active connections: 1
server accepts handled requests
37 37 34
Reading: 0 Writing: 1 Waiting: 0

ngx_http_ssl_module模块:

1、    ssl on | off;

Enables the HTTPS protocol for the given virtual server.

2、ssl_certificate file;

当前虚拟主机使用PEM格式的证书文件;

3、ssl_certificate_key file;

当前虚拟主机上与其证书匹配的私钥文件;

4、ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];

支持ssl协议版本,默认为后三个;

5、ssl_session_cache off | none | [builtin[:size]] [shared:name:size];

builtin[:size]:使用OpenSSL内建的缓存,此缓存为每worker进程私有;

[shared:name:size]:在各worker之间使用一个共享的缓存;

6、ssl_session_timeout time;

客户端一侧的连接可以复用ssl session cache中缓存 的ssl参数的有效时长;

创建证书&签名

[[email protected] html]# cd /etc/pki/CA/
[[email protected] CA]# ls
certs  crl  newcerts  private
[[email protected] CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)  #创建私钥
Generating RSA private key, 2048 bit long modulus
...................................................................+++
........+++
e is 65537 (0x10001)

创建自签名文件

e is 65537 (0x10001)
[[email protected] CA]#  openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:ha
。。。。
[[email protected] CA]# touch index.txt
[[email protected] CA]# touch serial
[[email protected] CA]# echo 01 >serial
[[email protected] CA]# cd /etc/nginx
[[email protected] nginx]# mkdir ssl
[[email protected] nginx]# (umask 077;openssl genrsa -out nginx.key 1024)
Generating RSA private key, 1024 bit long modulus
.........++++++
.............++++++
e is 65537 (0x10001)

申请证书

[[email protected] nginx]# openssl req -new -key nginx.key -out nginx.csr
[[email protected] ssl]# openssl ca -in nginx.csr -out nginx.crt -days 365

nginx配置文件结构改配置文件:

server {
        listen       443 default_server;
        listen       [::]:443 default_server;
        server_name  www.momoda.com;
        root         /var/www/html;
        ssl on;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
        ssl_session_cache shared:sslcache:20m;

ngx_http_rewrite_module模块:

定义在location server

将用户请求的URI基于regex所描述的模式进行检查,而后完成替换;

1、rewrite regex replacement [flag]

将用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI;

注意:如果在同一级配置块中存在多个rewrite规则,那么会自下而下逐个检查;被某条件规则替换完成后,会重新一轮的替换检查,因此,隐含有循环机制;[flag]所表示的标志位用于控制此循环机制;

如果replacement是以http://或https://开头,则替换结果会直接以重向返回给客户端;

301:永久重定向;

[flag]:

last:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URI启动新一轮重写检查;提前重启新一轮循环;

break:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环;

redirect:重写完成后以临时重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;不能以http://或https://开头;

permanent:重写完成后以永久重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;

2、return

 return code [text];
                return code URL;
                return URL;
                
                Stops processing and returns the specified code to a client.

3、 rewrite_log on | off;

是否开启重写日志;

4、 if (condition) { ... }

引入一个新的配置上下文 ;条件满足时,执行配置块中的配置指令;server, location;

condition:

比较操作符:

                      ==
                        !=
                        ~:模式匹配,区分字符大小写;
                        ~*:模式匹配,不区分字符大小写;
                        !~:模式不匹配,区分字符大小写;
                        !~*:模式不匹配,不区分字符大小写;
                    文件及目录存在性判断:
                        -e, !-e
                        -f, !-f
                        -d, !-d
                        -x, !-x

5、set $variable value;

用户自定义变量 ;

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  www.momoda.com;
        rewrite /(.*)  https://www.momoda.com/$1 permanent;
}
    server {
        listen       443 default_server;
        listen       [::]:443 default_server;
        server_name  www.momoda.com;
        root         /var/www/html;
        ssl on;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
        ssl_session_cache shared:sslcache:20m;
        ssl_session_timeout 200s;
        include /etc/nginx/default.d/*.conf;
}

ngx_http_referer_module模块:

The ngx_http_referer_module module is used to block access to a site for requests with invalid values in the “Referer” header field.

合法的引用:

1、valid_referers none | blocked | server_names | string ...;

定义referer首部的合法可用值;

none:请求报文首部没有referer首部;

blocked:请求报文的referer首部没有值;

server_names:参数,其可以有值作为主机名或主机名模式;

arbitrary_string:直接字符串,但可使用*作通配符;

regular expression:被指定的正则表达式模式匹配到的字符串;要使用~打头,例如 ~.*\.magedu\.com;

时间: 2024-10-10 20:23:32

nginx配置文件结构1的相关文章

nginx配置文件结构

nginx配置文件结构 全局参数 配置系统全局参数 如:worker_processes 工作子进程数量.error_log 错误日志路径.pid 进程ID Event 一般是配置nginx工作模式及连接的特性 如: worker_connections 1024; // 一个子进程最大允许连1024个连接 http 配置http服务器的主要段 (1)http参数部分 如连接超时时间.压缩.缓冲等 (2)upstream 负载均衡设置 (3)server 配置虚拟主机 可以包含多个locatio

nginx安装和配置文件结构简介

NGINX官方网站是http://nginx.org,可从上面下载源码,查看各类操作文档: (1)YUM安装  先创建/etc/yum.repos.d/nginx.repo,内容如下: [nginx] name=nginx repo baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/ gpgcheck=0 enabled=1 然后执行: yum install nginx OS指操作类型,例如centos,rhel等OSRELEAS

nginx模型概念和配置文件结构

一. nginx模型概念: Nginx会按需同时运行多个进程: 一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等. 所有进程均是仅含有一个线程,并主要通过“共享内存”的机制实现进程间通信. 主进程以root用户身份运行,而worker.cache loader和cache manager均应以非特权用户身份(user配置项)运行. 主进程主要完成如下工作: 1. 读取并验正配置信

nginx 配置详解

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:京东.新浪.网易.腾讯.淘宝等. 一.event模型 传统的基于进程和线程的模型在处理并发连接的时候针对每个连接

nginx配置整理

一.配置 1).配置文件结构 Nginx的配置文件是一个纯文本文件,它一般位于Nginx安装目录的conf目录下,整个配置文件是以block的形式组织的.每个block一般以一个大括号"{}"来表示,block可以分为几个层次,整个配置文件中main指令位于最高层,在main层下面可以有Events.HTTP等层级,而在HTTP层中又包含有server层,即server block,server block中又可分为location层,并且一个server block中可以包含多个lo

linux学习笔记——搭建基于nginx的web服务器、多核配置、nginx配置参数

############ 认识nginx #############Nginx:(发音同 engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用.  其优点是轻量级(占有内存少),高并发(并发能力强),事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用ngi

12.17 Nginx负载均衡;12.18 ssl原理;12.19 生产ssl密钥对;12.20 Nginx配置ssl

扩展: 针对请求的uri来代理 http://ask.apelearn.com/question/1049 根据访问的目录来区分后端web http://ask.apelearn.com/question/920 12.17 Nginx负载均衡 1. 安装dig命令: [[email protected] ~]# yum install -y bind-utils 2. 用dig获取qq.com的ip地址: [[email protected] ~]# dig qq.com 3. 创建ld.co

Nginx配置详解

Nginx配置文件主要分成四部分: main(全局设置)指令将影响其它所有部分的设置: server(主机设置)指令主要用于指定虚拟主机域名.IP和端口: upstream(上游服务器设置,主要为反向代理.负载均衡相关配置)指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡: location(URL匹配特定位置后的设置),每部分包含若干个指令.location部分用于匹配网页位置(比如,根目录"/","/images",等等). 他们之间的关系式:

LNMP架构应用实战——Nginx配置虚拟主机

LNMP架构应用实战--Nginx配置虚拟主机        前面介绍了nginx服务的安装与配置文件,今天介绍下它的另一种实用配置--"虚拟主机",每个虚拟主机可以是一个独立的网站,可以具有独立的域名,同一台服务器上的不同的虚拟主机之间是独立的,用户访问不同虚拟主机如同访问不同的服务器一样,因此它不需要为一个单独的WEB站点提供单独一个nginx服务器和一个单独的nginx进程 1.nginx虚拟主机简单介绍 同apache服务一样,它也有三种不同的虚拟主机,基于域名的虚拟主机.基于