nginx相关配置

nginx内置变量

  • $arg_PARAMETER
    客户端GET请求中PARAMETER字段的值。
  • $args客户端
    请求中的参数
  • $binary_remote_addr
    远程地址的二进制表示
  • $body_bytes_sent
    已发送消息体字节数
  • $content_length
    HTTP请求信息里的Content-Length字段
  • $cookie_COOKIE
    客户端请求中COOKIE头域的值
  • $document_root
    针对当前请求的根路径设置值
  • == d o c u m e n t u r i = = 与 ‘ ‘ ‘ document_uri== 与``` documenturi==uri```相同
  • $host
    请求信息中的Host头域值,如果请求中没有Host行,则等于设置的服务器名
  • $http_HEADER
    HTTP请求中HEADER字段
  • == h t t p h o s t = = 与 ‘ ‘ ‘ http_host== 与``` httphost==host```相同,如果请求信息中没Host行,则可能不同。
  • http_referer
    引用地址
  • $http_user_agent
    客户端代理信息
  • $http_via
    最后一个访问服务器的IP地址
  • $http_x_forwarded_for
    相当于网络访问路径
  • == i s a r g s = = 如 果 ‘ ‘ ‘ is_args== 如果``` isargs==args```有值,则相当于“?”否在为空
  • $limit_rate
    对连接速率的限制
  • $nginx_version
    当前Nginx服务器版本
  • $pid
    当前服务器主进程的进程ID
  • query_string
    $args相同
  • remote_addr
    客户端IP地址
  • remote_port
    客户端端口号
  • remote_user
    客户端用户名,用于Auth Basic Module验证
  • request
    客户端请求
  • request_body
    客户端请求的报文体
  • request_body_file
    发往后端服务器本地临时缓存文件的名称
  • request_filename
    当前请求的文件路径名,由root或alias指令与URI请求生成
  • request_method
    请求方法比如:GET和POST
  • request_uri
    请求的URI,带参数,不包含主机名
  • scheme
    所用的协议,如http或者https,
    如:rewrite^(.+)$$scheme://mysite.name$1redirect
  • $server_addr
    服务器地址,如果没有用Listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(会造成资源浪费).
  • $server_name
    请求到达的服务器名。
  • $server_port
    请求到达的服务器端口号
  • $server_protocol
    请求的协议版本,HTTP/1.0或HTTP/1.1
  • $uri
    请求的不带请求参数的URI,可能和最初的值有不同,比如经过重定向之类的。

nginx执行命令

./nginx -t:检测nginx.conf配置文件语法是否正确。
-p:用来改变nginx的安装路径。
/usr/local/nginx/sbin/nginx -s reload:更新nginx配置
./sbin/Nginx:直接启动
./sbin/Nginx -g TERM | INT | QUIT:TERM/INT用于快速停止。QUIT用于平缓停止。
或者
kill TERM | INT | QUIT `/Nginx/logs/nginx.pid
kill -9 | SIGKILL `Nginx/logs/nginx.pid`
./sbin/nginx -g HUP [-c newconfile]:HUP用于平缓重启,-c用于指定新的配置文件
或:
kill HUP `/Nginx/logs/nginx.pid`

  • nginx升级
./Nginx/nginx -p 【newInstallPath】
./sbin/Nginx -g USR2或
kill USR2 `/Nginx/logs/nginx.pid`
ps -ef | grep nginx查看服务是否正常
./sbin/Nginx -g WINCH 平缓停止旧服务
kill WINCH `/Nginx/logs/nginx.pidyy`

配置文件说明。

nginx的配置文件,包括以下几部分:全局块events,http,server,location

  • 全局块:用于定义影响Nginx服务器整体运行的配置指令。
    • 如:运行用户组,允许生成的worker process数、Nginx

配置文件参数详细说明

#user  nobody;
user nginx nginx;
worker_processes 2;
pid logs/nginx.pid;
#work进程打开的最大文件数
worker_rlimit_nofile 100000;

events {
    #单进程允许的客户端最大连接数,ulimit -n查看最大文件句柄数
    worker_connections  2048;
    #打开同时接受多个新网络连接请求的功能
    multi_accept on;
    #优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置,on为防止被同时唤醒,默认为off
    accept_mutex on;
    #事件驱动模型
    use epoll;
}

http {
    #隐藏nginx版本号
    server_tokens off;
    #当nginx做为静态资源服务器时,sendfile接口可提高性能,反向代理则不起作用
    sendfile on;
    #在 nginx 中,tcp_nopush 配置和 tcp_nodelay "互斥"。它可以配置一次发送数据的包大小,与 sendfile搭配使用
    tcp_nopush on;
    #复用连接,指定每个TCP 连接最多可以保持多长时间。与tcp_nodelay 配合使用,关闭会导致nodelay失效
    keepalive_timeout 10;
    #交互性的以及客户/服务器型的应用程序将极大地受益,禁用了Nagle算法.(不需要等待0.2s)使数据立即发出
    #开启或关闭nginx使用TCP_NODELAY选项的功能。 这个选项仅在将连接转变为长连接的时候才被启用。(译者注,在upstream发送响应到客户端时也会启用)。
    tcp_nodelay on;
    #可通过keep-alive连接的客户端请求数.下面的值仅是测试环境使用,具体设置请根据实际机器来调
    keepalive_requests 100000;
    #指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)
    client_body_timeout 100;
    #客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的request header,Nginx 返回 HTTP 408(Request Timed Out)
    client_header_timeout 100;
    #服务端向客户端传输数据的超时时间。
    send_timeout 100;
    #在客户端停止响应之后,允许服务器关闭连接,释放socket关联的内存
    reset_timedout_connection on;
    #指令描述会话状态存储区域。会话的数目按照指定的变量来决定,它依赖于使用的变量大小和memory_max_size的值。默认no
    limit_conn_zone $binary_remote_addr zone=addr:5m;
    #指定一个会话的最大同时连接数,超过这个数字的请求将被返回”Service unavailable” (503)代码。默认为no
    limit_conn addr 100;
    #对每个连接限速400k. 注意,这里是对连接限速,而不是对IP限速。如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate×2。
    limit_rate 400k;
    #指定当连接数超过设定的最大连接数,服务器限制连接时的日志等级,默认值为error
    limit_conn_log_level error;
    #多域名,服务器名字的hash表大小,表示 server name 的字符串长度上限值
    server_names_hash_bucket_size 128;
    #表示支持的 server name 总数
    server_names_hash_max_size 512;
    #报错日志生成地址和级别
    error_log logs/error.log notice;
    #error.log 中生成重写的 rewrite 日志
    rewrite_log on;
    #关闭全局access日志,server块中单独配置
    access_log off;
    #通过该文件识别资源媒体类型,HTML/GIF/XML/Flash等内容,MIME是网络资源的媒体类型,直接播放媒体资源
    include       mime.types;
    #推荐配置在location块中,避免浏览器自动播放媒体文件,而不是供用户下载,MIME类型会被重置为application/octet-stream
    default_type  application/octet-stream;
    charset UTF-8;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    ####cache#########################################
    #缓存文件的最大数目为 100000, 超过此数字后 Nginx 将按照 LRU 原则丢弃冷数据
    #inactive=20s 与 open_file_cache_min_uses 2 表示如果在 20s 内某文件被访问的次数低于 2 次,那就将它从缓存中删除。
    open_file_cache max=100000 inactive=20s;
    #表示每 30s 检查一次缓存中的文件元信息是否是最新的,如果不是则更新之
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    #如果你的静态文件内容变化频繁并且对时效性要求较高,一般应该把 open_file_cache_valid 设置的小一些,以便及时检测和更新
    #对静态文件访问的 error 和 access log 不关心的话,可以关闭已提升效率
    #open_file_cache_errors文件错误是否也同样缓存
    open_file_cache_errors on;
    #
    #
    #access_log  logs/access.log  main;


    #sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    #keepalive_timeout  65;

    #gzip  on;
    ##################
    include exten/*.conf;
    ##################

新增模块操作

  • 查看已编译的配置
    /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
built with OpenSSL 1.1.0g  2 Nov 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.1.0g --with-http_perl_module
  • 重新编译,新增模块
#计划新增模块http_realip_module
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar xvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.1.0g --with-http_perl_module --with-http_realip_module
make
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp ./objs/nginx /usr/local/nginx/sbin/
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
  • 加入配置,以sentry为例
...
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Request-Id $request_id;
 proxy_set_header X-Forwarded-For $remote_addr;                                                                                                                                                                                 
 proxy_set_header X-Scheme $scheme;
...
nginx -s reload加载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值