深入Nginx

Nginx功能模块汇总

--with-http_core_module  #包括一些核心的http参数配置,对应nginx的配置为http区块部分
--with-http_access_module  #访问控制模块,用来控制网站用户对nginx的访问
--with-http_gzip_module  #压缩模块,nginx返回的数据压缩,属于性能优化模块
--with-http_fastcgi_module  #FastCGI模块,和动态应用相关的模块,例如PHP
--with-http_proxy_module  #proxy代理模块
--with-http_upstream_module  #负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查
--with-http_rewrite_module  #URL地址重写模块
--with-http_limit_conn_module  #限制用户并发连接及请求数模块
--with-http_limit_req_module  #根据定义的key限制nginx请求过程的sulv
--with-http_log_module  #请求日志模块,以制定的个事记录nginx客户访问日志的信息
--with-http_auth_basic_module  #web认证模块,设置web用户通过账号、密码访问nginx
--with-http_ssl_module  #ssl模块,用于加密的http连接,如https
--with-http_stub_status_module  记录nginx基本访问状态信息等的模块

Nginx的目录结构说明

conf   #这是nginx所有配置文件的目录  fastcgi.conf     #fastcgi相关参数的配置文件  fastcgi.conf.default    #fastcgi.conf的原始备份  fastcgi_params       #fastcgi的参数文件  fastcgi_params.default     koi_utf  koi_win  mime.types  #媒体类型  mime.types.defualt  nginx.conf  #Nginx默认的配置文件  nginx.conf.default  scgi_params  #scgi相关参数文件  uwsgi_params  #uwsgi相关参数配置文件fastcgi_temp   #fastcgi临时配置文件html  logs  #默认的日志路径  access.log  #默认访问日志文件  error.log  nginx.pidproxy_temp   #临时文件sbin  #nginx的命令目录  nginx  #nginx的 启动命令

Nginx的配置文件说明

cat nginx.conf.defaultuser  www www;worker_processes  2;#worker进程的数量
pid        logs/nginx.pid;
events {        #事件区块开始
    use epoll;
    worker_connections  2048;  #每个worker进程支持的最大连接数
}

http {        #http区块开始
    include       mime.types;  #ngninx支持的媒体类型库文件
    default_type  application/octet-stream;  #默认的媒体类型
    sendfile        on;        #开启高效传输模式
    keepalive_timeout  65;    #连接超时

  # 很重要的虚拟主机配置
    server {        #第一个server区块开始
        listen       80;  
        server_name  itoatest.example.com;    #提供服务的域名主机名ip/domain
        charset utf-8;

        location / {        root   /apps/oaapp;      #站点的根目录
     index  index.html  index.htm;  #默认首页文件
     }       error_page  500  502  504  504  /50x.html #出现对应的http状态码时,使用50x。html回应客户    local  = /50x.html{      root html;    }} 

 

Nginx虚拟主机配置

1.基于域名的nginx.conf配置文件

    server {
        listen       80;
        server_name  www.abc.com;  

        location / {
            root   html/www;
            index  index.html index.htm;
        }
    server {
        listen       80;
        server_name  blog.abc.com;  

        location / {
            root   html/blog;
            index  index.html index.htm;
        }
    server {
        listen       80;
        server_name  bbs.abc.com;  

        location / {
            root   html/bbs;
            index  index.html index.htm;
        } 

2.基于端口的虚拟主机

    server {
        listen       80;
        server_name  www.abc.com;  

        location / {
            root   html/www;
            index  index.html index.htm;
        }
    server {
        listen       81;
        server_name  blog.abc.com;  

        location / {
            root   html/blog;
            index  index.html index.htm;
        }
    server {
        listen       82;
        server_name  bbs.abc.com;  

        location / {
            root   html/bbs;
            index  index.html index.htm;
        } 

3.基于ip的虚拟配置

    server {
        listen       10.0.0.1:80;
        server_name  www.abc.com;  

        location / {
            root   html/www;
            index  index.html index.htm;
        }
    server {
        listen       10.0.0.2:81;
        server_name  blog.abc.com;  

        location / {
            root   html/blog;
            index  index.html index.htm;
        }
    server {
        listen       10.0.0.3:82;
        server_name  bbs.abc.com;  

        location / {
            root   html/bbs;
            index  index.html index.htm;
        } 

Nginx的规范优化配置文件

主文件包含的所有虚拟主机的子配置文件会统一放在extra目录中。虚拟主机的配置文件按照网站的域名或功能名称取名,例如www.conf等

events {        #事件区块开始
    use epoll;
    worker_connections  2048;  #每个worker进程支持的最大连接数
}
http {        #http区块开始
    include       mime.types;  #ngninx支持的媒体类型库文件
    default_type  application/octet-stream;  #默认的媒体类型
    sendfile        on;        #开启高效传输模式
    keepalive_timeout  65;    #连接超时
    include extra/www.conf;  include extra/bbs.conf;

} 
[[email protected] conf]# cat extra/www.conf
    server {
        listen       80;
        server_name  www.abc.com;  

        location / {
            root   html/www;
            index  index.html index.htm;
        } } 

location里面设置允许和禁止的ip段访问

location /nginx_status{
         stub_status on;   #打开状态信息开关
       access_log off;     allow 10.0.0.0/24;  #设置允许和禁止的IP段访问     deny all;  #设置允许和禁止的ip段访问

}

Nginx错误日志配置

错误日志常见的级别【debug|info|notice|warn|error|crit|alert|emerg】

生存环境通过是warn|error|crit,注意不要配置info等较低级别,会损坏巨大磁盘IO

通常配置如下:

worker_processes 1;
error_log    logs/error.logs   error;    #就在这里配置
events    {
.....
}

Nginx访问日志

1.访问日志两个参数

log_format  用来定义记录日志格式(可以定义多种日志个事,取不同名字)

access_log  用来制定日志文件的路径和使用何种日志格式记录日志

2.访问日志配置说明

  log_format

  

log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘          ‘$status $body_bytes_sent "$http_referer" ‘          ‘"$http_user_agent" "$http_x_forwarded_for" ‘;
$remote_addr #记录访问网站的客户端地址$http_x_forwarded_for#当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器上也进行了相关的$remote_user  #远程客户端用户名称$time_local  #记录访问时间与时区$request  #用户的http请求其实行信息$status  #http状态码,记录请求返回的状态,例如200,404,301等$body_bytes_sents  #服务器发送给客户端的响应body字节数$http_referer  #记录此次请求是从那个链接访问过来的,可以根据referer进行防盗链设置$http_user_agent  #记录客户端访问信息。例如浏览器,手机客户端等

  access_log

语法如下:

access_log path [format [buffer=size [flush=time]] [if=condition]];access_log path format gzip[=level] [buffer=size] [flush=time][if=codition];access_log syslog:server=address[,parameter=value] [format [if=condition]];

buffer=size 为存放访问日志的缓冲区大小

flush=time为将缓冲区的日志刷到磁盘的时间

gzip[=level]表示压缩级别

[if=condition] 表示其他条件

access_log off表示不记录访问日志

一般情况无须配置,极端优化菜考虑

样例

events {        #事件区块开始
    use epoll;
    worker_connections  2048;  #每个worker进程支持的最大连接数
}
http {        #http区块开始
    include       mime.types;  #ngninx支持的媒体类型库文件
    default_type  application/octet-stream;  #默认的媒体类型
    sendfile        on;        #开启高效传输模式
    keepalive_timeout  65;    #连接超时  
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘          ‘$status $body_bytes_sent "$http_referer" ‘          ‘"$http_user_agent" "$http_x_forwarded_for" ‘;  
    
  include extra/www.conf;
  include extra/bbs.conf;

} 
[[email protected] conf]# cat extra/www.conf
    server {
        listen       80;
        server_name  www.abc.com;  

        location / {
            root   html/www;
            index  index.html index.htm;
        }    access_log logs/access_www.log main;

}

然后重启服务,记得创建文件呀access_www.log

时间: 2024-10-01 07:38:26

深入Nginx的相关文章

linux下Nginx配置文件(nginx.conf)配置设置详解(windows用phpstudy集成)

linux备份nginx.conf文件举例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-20171111(日期) 在进程列表里 面找master进程,它的编号就是主进程号. ps -ef | grep nginx 查看进程 cat /usr/local/nginx/nginx.pid 每次修改完nginx文件都要重新加载配置文件linux命令: /usr/local/nginx -t //验证配置文件是否合法 若ngin

shell 格式化输出nginx的编译参数

命令 nginx -V > nginx.txt cat -n nginx.txt  | sed -n '5,18p' | awk '{$1="";print $0}'  | sed 's/^[ ]*//g'  | tr '\n' ',' | sed -n 's/,//gp' | tr " " "\n" 结果 configure arguments: --user=nginx --group=nginx --prefix=/usr/share

Nginx 反代参数:$X-Real-Ip和$X-Forwarded-For的区别

## \$X-Real-Ip和$X-Forwarded-For的区别 标签(空格分隔): nignx 负载均衡 client-ip --- ####1.如果只有一层代理,这两个头的值就是一样的####2.多层代理> * X-Forwarded-For:  header包含这样一行        `*X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3*`> * X-Real-Ip:没有相关标准,上面的例子,如果配置了X-Read-IP,可能会有两种情况`// 最

Nginx为什么比Apache Httpd高效:原理篇

一.进程.线程? 进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6)中,线程才是基本的运作单位,而进程只是线程的容器.程序 本身只是指令.数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例.若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循 序)或异步(平行)的方式独立运行.现代计算机系统可在同一段时间内以进程的形式将多个程序加载到存储器中,并借

linux 安装与启动nginx

linux系统为Centos 64位 一.去http://nginx.org/download/上下载相应的版本下载nginx-1.8.0.tar.gz(注:还有更高版本的). 二.解压 tar -zxvf nginx-1.8.0.tar.gz 三.进入nginx-1.8.0/文件夹,设置一下配置信息 ./configure --prefix=/usr/local/nginx(安装后的文件存放路径). 四.配置的时候可能会出现类似这样的信息 ./configure: error: the HTT

linux运维、架构之路-Nginx提高

一.虚拟主机搭建 1.基于域名的虚拟主机 [[email protected] html]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name

linux自学笔记--nginx基本配置

1.基本配置 worker_processes auto|3; 指定使用的核数,默认auto,也可指定  一般为自身核数-1,可用lscpu查看 events { worker_connections 1024; 最大并发连接数,最大并发响应  数 worker_processes * worker_connections } http { keepalived_timeout 65 0表示禁止长连接 keepalived_request 长连接最大资源数,默认100 keepalived_di

nginx配置文件详解

nginx配置文件nginx.conf超详细讲解 #nginx进程,一般设置为和cpu核数一样worker_processes 4;                        #错误日志存放目录 error_log  /data1/logs/error.log  crit;  #运行用户,默认即是nginx,可不设置user nginx       #进程pid存放位置pid        /application/nginx/nginx.pid; #Specifies the value

Saltstack批量编译部署nginx(多模块)

最近一直在研究saltstack的同步文件和批量执行命令,随着架构的变大,批量部署的需求也变得明显起来了,我需要用一条命令就部署好nginx和tomcat,并且符合我所有的环境需求,可以直接投入生产环境使用,这就需要用到saltstack的批量安装部署功能了.这篇文章主要介绍nginx的批量部署,下篇讲解tomcat多实例的批量部署方法. 环境介绍: Centos 6.5 salt 2015.5.10 nginx 1.12.0 minion:test 1.修改master配置文件,修改后重启服务

FastDFS+Nginx问题及修复

FastDFS+nginx问题及修复:     1.[error] 30000#0: *1 open() "/usr/local/nginx/html/group1/M00/00 /00/wKgAA1cLh12AI0kfAAAADzbdjmQ50_big.html           "failed (2: No such file or directory), client: 192.168.0.181, server:localhost, request:            &