牛骨文教育服务平台(让学习变的简单)
博文笔记

nginx配置字段详解

创建时间:2017-12-25 投稿人: 浏览次数:383

#表示注释
########### 每个指令必须有分号结束。#################

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

nginx文件结构

...              #全局块
events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

# user administrator administrators; #配置用户或者组,默认为nobody nobody。
# worker_processes 2; #允许生成的进程数,默认为1
# pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
# error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

#设定虚拟主机配置
 server {
 #侦听80端口
                listen          9004;
#定义使用 127.0.0.1.访问,如果是域名,则使用该域名访问
                server_name     127.0.0.1;
#定义服务器的默认网站根目录位置
                root           /home/deploy/data/app/WebProjects/sevendData/;

# 设定本虚拟主机的访问日志
# access_log  logs/nginx.access.log  main;
# 默认请求
#  location / {
#           #定义首页索引文件的名称
#         index index.php index.html index.htm;   
#       }
 # 定义错误提示页面
#  error_page   500 502 503 504 /50x.html;
#     location = /50x.html {
#    }
#静态文件,nginx自己处理
#  location ~ ^/(images|javascript|js|css|flash|media|static)/ {
#       #过期30天,静态文件不怎么更新,过期可以设大一点,
#        #如果频繁更新,则可以设置得小一点。
#        expires 30d;
#     }

location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
# expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求
# 要配置expires,可以在http段中或者server段中或者location段中加入
       location ~ .(gif|jpg|jpeg|png|bmp|ico)$ {
           root /var/www/img/;
           expires 30d;
       }
# 控制图片等过期时间为30天,当然这个时间可以设置的更长。具体视情况而定
比如



#本地动静分离反向代理配置
  #所有jsp的页面均交由tomcat或resin处理
  location ~ .(jsp|jspx|do)?$ {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8080;
  }
  #所有静态文件由nginx直接读取不经过tomcat或resin
  location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
  { expires 15d; }
  location ~ .*.(js|css)?$
  { expires 1h; }
}
}
                index  index.html index.htm;
在这个例子中文档根(doucument root)位于html/目录。根据nginx的安装目录/usr/local/nginx,这个location的完整路径是/usr/local/nginx/html。假设一个请求访问位于/blog/includes/styles.css文件同时没有别的location块匹配,那么nginx会用位于文件系统的/usr/local/nginx/html/blog/includes/styles.css响应。当然你也可以用绝对路径设置root指令。

index指令会告诉nginx使用哪个资源如果请求中没有文件名。因此,如果请求http://.ducklington.org/将会补全资源位置为/usr/local/nginx/html/index.html。如果index配置了多个文件,nginx会按顺序处理直到找到第一个存在的补全资源。如果index.html在相关目录中没有,那么将使用index.htm。如果两个都不存在,会返回404错误。

location = /login {  
   #规则B  
}  
访问 http://localhost/login 将匹配规则B


          location /data/api {
                proxy_pass  http://127.0.0.1:9003;   #请求转向 http://127.0.0.1:9003; 定义的服务器列表
                proxy_set_header   Host           $host;  proxy_set_header用来重定义发往后端服务器的请求头。一般而言,会用$host代替$http_host变量,从而避免http请求中丢失Host头部的情况下Host不被重写的失误。
                proxy_set_header   X-Real-IP        $remote_addr;  $remote_addr输出结果为真实客户端IP
什么是remote_add?
remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP
什么是x_forwarded_for?
正如上面所述,当你使用了代理时,web服务器就不知道你的真实IP了,为了避免这个情况,代理服务器通常会增加一个叫做x_forwarded_for的头信息,把连接它的客户端IP(即你的上网机器IP)加到这个头信息里,这样就能保证网站的web服务器能获取到真实IP
 $http_host和$remote_addr都是nginx的导出变量
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;   #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP,配合这个把真实的ip 发送给 转发的web服务器,要不 的话 接收请求的 收到的请求ip都是 nginx这台的

#以下是一些反向代理的配置,可选。
  proxy_set_header Host $host;
  client_max_body_size 10m; #允许客户端请求的最大单文件字节数
  client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
  proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
  proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
  proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
  proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
  proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
  proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
  proxy_temp_file_write_size 64k;
  #设定缓存文件夹大小,大于这个值,将从upstream服务器传



           deny 127.0.0.1;  #拒绝的ip
           allow 172.18.5.54; #允许的ip
            }
       }
*注意:
1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;
2.$remote_user :用来记录客户端用户名称;
3.$time_local : 用来记录访问时间与时区;
4.$request : 用来记录请求的url与http协议;
5.$status : 用来记录请求状态;成功是200;
6.$body_bytes_sent :记录发送给客户端文件主体内容大小;
7.$http_referer :用来记录从那个页面链接访问过来的; 
8.$http_user_agent :记录客户端浏览器的相关信息;
       server {
                listen          80;
                server_name     sevendpolicy.audit.zeus.com;
                root           /home/deploy/data/app/sevendPolicyAudit/dist/;
                index  index.html index.htm;
                location /api {
                        proxy_pass http://localhost:30018;
                        proxy_set_header Host $host;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                }
                location /graph-platform {
                        proxy_pass      http://112.74.195.151;
                        proxy_set_header   Host             $host;
                        proxy_set_header   X-Real-IP        $remote_addr;
                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                }

       }

       server {
                listen          80;
                server_name     sevendpolicy.audit.zeus.com;
                root           /home/deploy/data/app/sevendPolicyAudit/dist/;
                index  index.html index.htm;
                location /api {
                        proxy_pass http://localhost:30018;
                        proxy_set_header Host $host;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                }
                location /graph-platform {
                        proxy_pass      http://112.74.195.151;
                        proxy_set_header   Host             $host;
                        proxy_set_header   X-Real-IP        $remote_addr;
                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                }

       }

#禁用缓存 proxy_buffering off;
add_header ‘Access-Control-Allow-Origin’ ‘*’;
add_header ‘Access-Control-Allow-Headers’ ‘Content-Type,Accept’;

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。