IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 项目实践、nginx服务做反向代理配置说明 -> 正文阅读

[系统运维]项目实践、nginx服务做反向代理配置说明

本文章介绍了本人工作过程中使用的nginx服务作为反向代理的配置,并针对很多配置了相关的说明及解析的,重要信息是进行了过滤,可以给大家进行参考使用。

很多配置仅供参考的,不做实际的生产环境使用的!!!


配置文件是nginx.conf,具体配置内容如下:

user nginx nginx;

#Nginx worker 进程运行的用户及用户组

语法:user username [groupname]
默认:user nobody nobody

作用及注意事项:

user 用于设置 master 进程启动后,fork 出的 worker 进程运行在哪个用户和用户组下。
当按照“user username;”设置时,用户组与用户名相同。
若用户在 configure 命令执行时使用了参数 --user=username 和 --group=groupname,此时 nginx.conf 将使用参数中指定的用于和用户组。

worker_processes  2;
worker_cpu_affinity 01 10;

优化性能的配置项

Nginx worker 进程个数

语法:worker_processes number;
默认:worker_processes 1;

在 master/worker 运行方式下,定义 worker 进程的个数。

绑定 Nginx worker 进程指定的 CPU 内核

语法:worker_cpu_affinity cpumask [cpumask...]
例子:

worker_processes 4;
worker_cpu_affinity 1000 0100 0010 0001;

注:这里几核就是几位二进制的数字的,2位就是01 10的,最多是8位的,切记,
error_log ?logs/error.log;

error 日志的设置

语法:error_log /path/file ?level;
默认:error_log logs/error.log error;

设置 error 日志的路径和级别。路径设置为 /dev/null,这样就不会输出任何日志了,这也是关闭 error 日志的唯一手段;路径也可以是 stderr,这样日志输出到标准错误文件中。
level 是日式的输出级别,取值范围是 debug、info、notice、warn、error、crit、alert、emerg,从左到右级别依次增大。

pid        /app/nginx/conf/nginx.pid;

pid 文件路径

语法:pid path/file;
默认:pid logs/nginx.pid;

保存 master 进程 ID 的 pid 文件存放路径。

worker_rlimit_nofile 65535;

是nginx的work工作进程打开最多文件描述符数目的限制

语法:worker_rlimit_nofile number;
events {
    use epoll;
    worker_connections  10240;
}

use-选择时间模型

语法:use [kqueue | rtsig | epoll | /dev/poll | select | poll | eventport];
默认:Nginx 会自动使用最适合的事件模型。

worker_connections-每个 worker 的最大连接数

定义每个 worker 进程可以同时处理的最大连接数。

语法:worker_connections number;

如下是http模块的内容,这里比较分散的解析了,完整的配置最后会拿出来的。

http {
? ? include ? ? ? mime.types;
? ? default_type ?application/octet-stream;
? ? server_tokens off; ? ?
? ? gzip on;
? ? gzip_min_length 1k;
? ? gzip_buffers 16 8k;
? ? gzip_http_version 1.1;
? ? gzip_comp_level 2;
? ? gzip_types ?text/css text/xml application/javascript application/atom+xml application/rss+xml text/plain appl
ication/json application/x-javascript application/xml text/javascript;
? ? gzip_disable "MSIE [0-6]\.";
? ? gzip_vary on;

(1)include-嵌入其他配置文件

语法:include /path/file

路径参数既可以是绝对路径,也可以是相对路径。参数的值可以是一个明确的文件名,也可以是含有通配符*的文件名,同时可以嵌入多个配置文件。

这里的是嵌入了types的文件

(2)default_type-默认 MIME type

语法:default_type MIME-type;
默认:default_type text/plain;
配置块:http server location

当找不到相应的 MIME type 与文件扩展名之间的映射时,使用默认的 MIME type 作为 HTTP header 中的 Content-Type。

(3)server_tokens-返回错误页面时是否在 Server 中注明 Nginx 版本

语法:server_tokens on | off;
默认:server_tokens on;
配置块:http server location

(4)gzip-压缩配置

nginx服务是否采用gzip压缩的形式来发送数据

语法:gzip on | off
默认:gzip off

gzip_min_length-当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩

语法: gzip_min_length length;
默认:gzip_min_length 20;
配置模块: http, server, location

gzip_buffers-设置用于处理请求压缩的缓冲区数量和大小。比如32 4K表示按照内存页(one memory page)大小以4K为单位(即一个系统中内存页为4K),申请32倍的内存空间。建议此项不设置,使用默认值

语法: gzip_buffers number size;
默认: gzip_buffers 32 4k|16 8k;
配置模块: http, server, location

gzip_http_version-用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项。默认在http/1.0的协议下不开启gzip压缩。

语法: gzip_http_version 1.0 | 1.1;
默认: gzip_http_version 1.1;
配置模块: http, server, location

gzip_comp_level-设置gzip压缩级别,级别越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大

语法: gzip_comp_level level;
默认: gzip_comp_level 1;
配置模块: http, server, location

gzip_types-设置需要压缩的MIME类型,如果不在设置类型范围内的请求不进行压缩

语法: gzip_types mime-type ...;
默认: gzip_typestext/html;
配置模块: http, server, location

gzip_disable-通过表达式,表明哪些UA头不使用gzip压缩

语法: gzip_disable regex ...;
默认: —
配置模块: http, server,locationThis directive appearedinversion 0.6.23.

gzip_vary-增加响应头”Vary: Accept-Encoding”告诉接收方发送的数据经过了压缩处理,开启后的效果是在响应头部添加了Accept-Encoding:gzip,这对于本身不支持gzip压缩的客户端浏览器有用。

语法: gzip_varyon |off;
默认: gzip_vary off;
配置模块: http, server, location

注:继续在http模块下的配置


    server_names_hash_bucket_size 128;
    client_header_buffer_size 1k;
    large_client_header_buffers 4 8k;
    client_max_body_size 6G;
    client_body_timeout  5;
    client_header_timeout 20;

    open_file_cache max=65535 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;

server_names_hash_bucket_size-为了提高快速寻找到相应 server name 的能力,Nginx 使用散列表来存储 server name。server_names_hash_bucket_size 设置了每个散列桶的内存大小。

语法:server_names_hash_bucket_size size;
默认:server_names_hash_bucket_size 32|64|128;
配置块:http、sever、location

client_header_buffer_size-存储 HTTP 头部的内存 buffer 大小

语法:client_header_buffer_size size;
默认:client_header_buffer_size 1k;
配置块:http server

large_client_header_buffers-是假设(请求行+请求头)的大小如果超过client_header_buffer_size的配置大小,则以large_client_header_buffers配置为准

语法: large_client_header_buffers number size;
默认: large_client_header_buffers 4 8k;
配置模块: http, server

假设large_client_header_buffers的配置为4 8k,则对请求有如下要求

请求行(request line)的大小不能超过8k,否则返回414错误
请求头(request header)中的每一个头部字段的大小不能超过8k,否则返回400错误(实际是494错误,但nginx统一返回400了)
?

client_max_body_size-HTTP 请求包体的最大值

语法:client_max_body_size size;
默认:client_max_body_size 1m;
配置块:http server location

浏览器在发送含有较大 HTTP 包体的请求时,其头部会有一个 Content-Length 字段,client_max_body_size 是用来限制 Content-Length 所示值的大小的。

client_body_timeout-读取 HTTP 包体的超时时间

语法:client_body_timeout time(默认单位:秒);
默认:client_body_timeout 60;
配置块:http server location

client_header_timeout-读取 HTTP 头部的超时时间,超时返回480。

语法:client_header_timeout time (默认单位:秒);
默认:client_header_timeout 60;
配置块:http server location

open_file_cache-打开文件缓存

语法:open_file_cache max = N[inactive = time] | off;
默认:open_file_cache off;
配置块:http server location

文件缓存会在内存中存储以下 3 种信息。

? ? ?1)文件句柄、文件大小和上次修改时间。
? ? ?2)已经打开过的目录结构。
? ? ?3)没有找到的或者没有权限操作的文件信息。

这样,通过读取缓存就减少了对磁盘的操作。该配置项后面跟3中参数。

1)max:表示在内存中存储元素的最大个数。当达到最大限制数量后,将采用 LRU(Least Recently Used)算法从缓存中淘汰最近最少使用的元素。
2)inactive:表示在 inactive 制定的时间段内没有被访问过的元素将会被淘汰。默认时间为60秒。
3)off:关闭缓存功能。

open_file_cache_valid-检验缓存中元素有效性的频率,默认为每 60 秒检查一次缓存中的元素是否仍有效。

语法:open_file_cache_valid time;
默认:open_file_cache_calid 60s;
配置块:http server location

open_file_cache_min_uses-不被淘汰的最小访问次数

语法:open_file_cache_min_uses number;
默认:open_file_cache_min_uses 1;
配置块:http server location

它与 open_file_cache 中的 inactive 参数配合使用。如果在 inactive 指定的时间内,访问次数超过了 open_file_cache_min_uses 制定的最少次数,那么将不会淘汰出缓存。


注:继续http模块的配置


    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;

nginx如果要解析php脚本语言,就必须通过配置fastcgi模块来提供对php支持,该项目后端服务是涉及到PHP脚本语言的,所以nginx需要配置fastcgi

fastcgi_connect_timeout-描述nginx与后端fastcgi server连接超时时间

语法: fastcgi_connect_timeout 时间(单位为s)
默认值: fastcgi_connect_timeout 60s
配置模块: http server location

fastcgi_send_timeout-描述nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)

语法: fastcgi_send_timeout 时间(单位为s)
默认值: fastcgi_send_timeout 60s;
配置模块: http server location

fastcgi_read_timeout-描述nginx接受后端fastcgi响应请求超时时间 (指已完成两次握手后nginx接受fastcgi响应请求超时时间)

语法: fastcgi_read_timeout 时间(单位为s)
默认值: fastcgi_read_timeout 60s;
配置模块: http server location

fastcgi_buffer_size-描述nginx读取fastcgi响应第一部分需要用多大的缓冲区,这个值表示将使用一个64kb的缓冲区响应第一部分应答(应答头)可以设置为fastcgi_buffers缓存区大小

语法: fastcgi_buffer_size size (单位为k,一般为4的整数倍)
默认: fastcgi_buffer_size 4k|8K
配置模块: http server location

fastcgi_buffers-指nginx需要用多大的缓冲区缓冲fastcgi的应答请求(整个应答)

语法:    fastcgi_buffers num size (单位为k,一般为4的整数倍)
默认值:  fastcgi_buffers 8 4k|8K
配置模块: http server location

fastcgi_busy_buffers_size-整个数据请求需要多大的缓存区,建议设置为fastcgi_buffers值的两倍

语法:fastcgi_busy_buffers_size size (单位为K,一般为fastcgi_buffers值的2倍)
默认值: fastcgi_busy_buffers 8k|16K
配置模块: http server location

fastcgi_temp_file_write_size-写入缓存文件使用多大的数据块,默认值是fastcgi_buffer值的2倍

语法:fastcgi_temp_file_write_size size (单位为K,一般为fastcgi_buffers值的两倍)
默认值: fastcgi_temp_file_write_size 8k|16K
配置模块: http server location

注:继续http模块


    proxy_http_version 1.1;
    proxy_buffer_size 16k; 
    proxy_buffers 8 1M;
    proxy_busy_buffers_size 2M;
    rewrite_log on;
    proxy_connect_timeout 600s;
    proxy_connect_read_timeout 600s;
    proxy_connect_send_timeout 600s;
    client_body_buffer_size  512k;
    proxy_max_temp_file_size 5120m;
    proxy_temp_file_write_size 1M;
    proxy_buffering    off;
    proxy_request_buffering off;
    proxy_temp_path   /app/servers/nginx/proxy_temp;
    proxy_cache_path  /app/servers/nginx/proxy_temp/cache levels=2:2:2   keys_zone=cache_go:200m inactive=5d max_size=7g;
  
    log_format  access  '$time_iso8601|$http_x_forwarded_for|$remote_addr|$http_host|$request_time|'
                    '$upstream_response_time|"$request"|$status|$body_bytes_sent|$request_length|'
                    '"$http_referer"|"$http_user_agent"|$upstream_addr|"$http_cookie"| $upstream_cache_status |';
  
    access_log  logs/access_http.log  access;
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    keepalive_timeout  65;
    send_timeout       600;

nginx在代理是默认http版本为1.0,由于文件的下载涉及到使用分块传递,但http1.0是不支持这个特性的。所以服务端为1.1版本无法进行转发,所以需要配置http的版本为1.1

proxy_http_version 1.1

语法:proxy_http_version 1.0 | 1.1
默认:proxy_http_version 1.0;
配置模块:http,server,location

proxy_buffers-设置缓冲区的大小和数量,从被代理的后端服务器取得的响应内容,会放置到这里.?

语法:proxy_buffers ?数量 ?大小
默认值:proxy_buffers 8 ?4k/8k
配置模块:http,server,location

proxy_buffer_size-设置缓冲区大小,从代理后端服务器取得的第一部分的响应内容

语法:proxy_buffer_size ?the size
默认值:proxy_buffer_size 4k/8k
配置模块:http,server,location

proxy_busy_buffers_size-用来控制同时传输到客户端的buffer数量的大小

语法:proxy_busy_buffers_size ? ? ? ? ? ? ? ?大小
默认值:proxy_busy_buffers_size ?一般是proxy_buffer_size配置的两倍
配置模块:http,server,location,if

rewrite_log-配置是否开启URL重写日志的输出功能

语法:rewrite_log on|off;
默认值:rewrite_log off;
配置模块:http、server、location、if

proxy_connect_timeout-后端服务器连接的超时时间_发起握手等候响应超时时间

语法: proxy_connect_timeout time?
默认值:proxy_connect_timeout 60s
配置模块: http server location

proxy_connect_read_timeout-定义客户端从代理服务器读取响应的超时时间
proxy_connect_send_timeout-设置客户端将请求传输到代理服务器的超时时间

这里设置了客户端到代理服务器的时间,是适用于upstream模块的

client_body_buffer_size-如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中,在哪个临时文件中呢?client_body_temp 指定的路径中,默认该路径值是/tmp/.

语法: client_body_buffer_size size;
默认: client_body_buffer_size 8k|16k;
配置模块: http, server, location

proxy_max_temp_file_size-设置临时文件的最大容量,在nginx打开响应缓冲以后,如果整个响应不能存放在proxy_buffer_size和proxy_buffers指令设置的缓冲区内,部分响应可以存放在临时文件中。 而每次写入临时文件的数据量则由proxy_temp_file_write_size指令定义。
写入硬盘的临时文件的大小,如果超过了这个值, Nginx将与Proxy服务器同步的传递内容, 而不再缓冲到硬盘. 设置为0时,将禁止响应写入临时文件,也就相当于直接关闭硬盘缓冲。

语法: proxy_max_temp_file_size size;
默认值: proxy_max_temp_file_size 1024m;
配置模块: http, server, location

proxy_temp_file_write_size-?设置nginx每次写数据到临时文件的size(大小)限制,在nginx开启缓冲后端服务器响应到临时文件的功能后,size的默认值是proxy_buffer_size指令和proxy_buffers指令定义的每块缓冲区大小的两倍, 而临时文件最大容量由proxy_max_temp_file_size指令设置

语法: proxy_temp_file_write_size size;
默认值: proxy_temp_file_write_size 8k|16k;
配置模块: http, server, location

proxy_buffering-用来控制是否打开后端响应内容的缓冲区,如果这个设置为off,那么proxy_buffers和proxy_busy_buffers_size这两个指令将会失效。 但是无论proxy_buffering是否开启,对proxy_buffer_size都是生效的

语法: proxy_buffering on|off
默认值: proxy_buffering on
配置模块: http, server, location

proxy_request_buffering-启用还是禁用客户端请求正文的缓冲

语法: proxy_request_buffering on | off
默认: proxy_request_buffering on
配置模块:http、server、location

启用缓冲后,在将请求发送到代理服务器之前,将从客户端读取整个请求正文,
禁用缓冲时,请求主体在收到时会立即发送到代理服务器,如果nginx已经开始发送请求到主体了,无法将请求发送下一个服务器

proxy_temp_path-定义一个目录,用于存储包含从代理服务器接收的数据的临时文件。指定目录下最多可以使用三级子目录层次结构

语法: proxy_temp_path path [level1 [level2 [level3]]];
默认: proxy_temp_path proxy_temp;
配置模块:http, server, location

proxy_cache_path-定义缓存文件存放的路径

语法: proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time];
默认值:    —
配置模块:  http

path:指定缓存文件目录,和 proxy_temp_path 最好设置在同一文件分区下,建议将缓存和proxy_temp_path指令设置的临时文件目录放在同一文件系统。
level:定义了缓存的层次结构,每层可以用1(最多16中选择,0-f)或2(最多256种选择,00-ff)表示,中间用 [冒号] 分隔。“levels=1:2”表示开启1、2层级(第2层级理论有16*256个目录)。

keys_zone:指定一个共享内存空间zone,所有活动的键和缓存数据相关的信息都被存放在共享内存中,这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key;
inactive:inactive=30m 表示 30 分钟没有被访问的文件会被 cache manager 删除,inactive的默认值是10分钟。 需要注意的是,inactive和expired配置项的含义是不同的,expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问的缓存文件
max_size:cache存储的最大尺寸,如果不指定,会用掉所有磁盘空间,当尺寸超过,将会基于LRU算法移除数据,以减少占用大小。

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

语法:log_format 日志名称 日志格式

常见的日志格式变量有如下:

log_format格式变量:

    $remote_addr  #记录访问网站的客户端地址
    $remote_user  #远程客户端用户名
    $time_local  #记录访问时间与时区
    $request  #用户的http请求起始行信息
    $status  #http状态码,记录请求返回的状态码,例如:200、301、404等
    $body_bytes_sent  #服务器发送给客户端的响应body字节数
    $http_referer  #记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。
    $http_user_agent  #记录客户端访问信息,例如:浏览器、手机客户端等
    $http_x_forwarded_for  #当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的
前提是代理服务器也要进行相关的x_forwarded_for设置

access_log-用来指定日至文件的路径及使用的何种日志格式记录日志

语法:access path 日志名称

sendfile-系统调用

语法:sendfile on | off
默认:sendfile off;
配置块:http server location

可以启用 Linux 上的 sendfile 系统调用来发送文件,它减少了内核态与用户态之间的两次内存复制,这样就会从磁盘中读取文件后直接在内核态发送到网卡设备,提高了发送文件的效率。

tcp_nopush-必须在sendfile打开的状态下才会生效,主要是用来提升网络包的传输'效率'

语法:tcp_nopush on|off
默认:tcp_nopush off;
配置块:http server location

tcp_nodelay-必须在keep-alive连接开启的情况下才生效,来提高网络包传输的'实时性'

语法:tcp_nodelay on|off;
默认值:tcp_nodelay on;
配置模块:http、server、location

keepalive_timeout-超时时间

语法:keepalive_timeout time(默认单位:秒);
默认:keepalive_timeout 75;
配置块:http server location

send_timeout-发送响应的超时时间

语法:send_timeout time;
默认:send_timeout 60;
配置块:http server location

注:还是在http模块下

    upstream gw-api-7004 {
            server 192.178.14.9:7004  max_fails=3 fail_timeout=30s;
            server 192.178.14.10:7004 max_fails=3 fail_timeout=30s;
    } 

upstream 块

? ? ?语法:upstream name {...}
? ? ?配置块:http

upstream 块定义了一个上游服务器的集群,便于反向代理中的 proxy_pass 使用。例如:

upstream backend {
? ? ? ? ? server backend1.example.com;
? ? ? ? ? server backend2.example.com;
? ? ? ? ? server backend3.example.com;
}
    server {
        listen       80;
        server_name  localhost;

        rewrite ^(.*)$  https://$host$1 permanent;
    }

listen:监听的端口

语法:listen ip:port/port

server_name服务名称,可以是域名,也可以IP地址的,也可以的localhost

rewrite跳转地址

语法:rewrite <正则表达式> <跳转后的内容> [rewrite支持的flag标记]
^:匹配输入字符串的起始位置
$:匹配输入字符串的结束位置
*****:匹配前面的字符零次或多次
+:匹配前面的字符一次或多次
?:匹配前面的字符零次或一次
.:匹配除\n之外的任何单个字符 使用[.\n]可以匹配包括\n在内的任意字符
****:转义符
\d:匹配纯数字
{n}:重复n次
{n,}:重复n次或更多次
[c]:匹配单个字符c
[a-z]:匹配a-z小写字母的任意一个
[a-zA-Z]:匹配a-z小写字母或A-Z大写字母的任意一个
    server {
        listen       443;
        server_name  api.yufa.com;

        ssl on;
        root html;
        index index.html index.htm;
        ssl_certificate   /app/cert/yufa.com.pem;
        ssl_certificate_key  /app/cert/yufa.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        allow 171.10.0.0/16;
        allow 171.11.0.0/16;
        allow 171.120.0.0/16;
        allow 171.191.0.0/16;
        allow 171.201.0.0/16;
        allow 100.33.0.0/16;
        allow 100.1.10.12;
        allow 100.100.249.11;
        deny all;

        location / {
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header Host $host;
             proxy_buffering off;

             proxy_pass  http://gw-api-7004;
             }    

        location /publish {
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header Host $host;

             proxy_pass  http://api.app.yufa.fy.cn:8008;
             }

        location /config/server/configs {
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header Host $host;

             proxy_pass  http://yufa.app.yufa.yf.cn:8001;
             }

        location /nginx_status {
             stub_status on;
             access_log off;
             allow 127.0.0.1;
             allow 100.0.0.0/8;
             deny all;
        }
    }

}

ssl on-开启ssl认证

root-以 root 方式设置资源路径

语法:root path;
默认:root html;
配置块:http server location if

index-访问首页

语法:index file ...;
默认:index index.html;
配置块:http server location

有时,访问站点时的 URI 是 /,这是一般是返回网站的首页,而这与 root 和 alias 都不同。这里用 ngx_http_index_module 模块提供的 index 配置实现

ssl_certificate

ssl_certificate_key

ssl证书存放的位置

语法:
ssl_certificate path/*.pem
ssl_certificate_key path/*.key

ssl_session_timeout--ssl认证超时时间

语法:ssl_session_timeout $time

ssl_ciphers-ssl认证的加密套件内容

语法: ssl_ciphers ciphers;
默认: ssl_ciphers HIGH:!aNULL:!MD5;
配置模块: http, server

ssl_protocolsssl配置的协议

语法: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
默认: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
配置模块:?http, server

ssl_prefer_server_ciphers-配置服务器密码是否优先客户端密码

语法:ssl_perfer_server_ciphers on| off;
默认值:ssl_perfer_server_ciphers off;
配置模块:http、server

allow和deny--是配置哪些网络或者是具体的IP地址能够访问该nginx服务

语法: allow address | CIDR | unix: | all;
默认值: —
配置段: http, server, location, limit_except
语法: deny address | CIDR | unix: | all;
默认值:  —
配置段: http, server, location, limit_except

proxy_http_version-http协议的版本,这里采用的是1.1的

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-real-ip $remote_addr;
proxy_set_header Host $host;

请求头的作为反向代理需要进行转换和获取客户端地址

proxy_pass--需要代理到后端的服务的地址,这里采用了upstream模块的名称

location /nginx_status {

.........

}

这里表示是查询nginx服务的状态信息


完整的配置如下:仅供参考

user nginx nginx;

worker_processes  2;
worker_cpu_affinity 01 10;

error_log ?logs/error.log;

pid        /app/nginx/conf/nginx.pid;
worker_rlimit_nofile 65535;

events {
    use epoll;
    worker_connections  10240;
}

http {
? ? include ? ? ? mime.types;
? ? default_type ?application/octet-stream;
? ? server_tokens off; ? ?
? ? gzip on;
? ? gzip_min_length 1k;
? ? gzip_buffers 16 8k;
? ? gzip_http_version 1.1;
? ? gzip_comp_level 2;
? ? gzip_types ?text/css text/xml application/javascript application/atom+xml application/rss+xml text/plain appl
ication/json application/x-javascript application/xml text/javascript;
? ? gzip_disable "MSIE [0-6]\.";
? ? gzip_vary on;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 1k;
    large_client_header_buffers 4 8k;
    client_max_body_size 6G;
    client_body_timeout  5;
    client_header_timeout 20;

    open_file_cache max=65535 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
	
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
	
    proxy_http_version 1.1;
    proxy_buffer_size 16k; 
    proxy_buffers 8 1M;
    proxy_busy_buffers_size 2M;
    rewrite_log on;
    proxy_connect_timeout 600s;
    proxy_connect_read_timeout 600s;
    proxy_connect_send_timeout 600s;
    client_body_buffer_size  512k;
    proxy_max_temp_file_size 5120m;
    proxy_temp_file_write_size 1M;
    proxy_buffering    off;
    proxy_request_buffering off;
	
    proxy_temp_path   /app/servers/nginx/proxy_temp;
    proxy_cache_path  /app/servers/nginx/proxy_temp/cache levels=2:2:2   keys_zone=cache_go:200m inactive=5d max_size=7g;
  
    log_format  access  '$time_iso8601|$http_x_forwarded_for|$remote_addr|$http_host|$request_time|'
                    '$upstream_response_time|"$request"|$status|$body_bytes_sent|$request_length|'
                    '"$http_referer"|"$http_user_agent"|$upstream_addr|"$http_cookie"| $upstream_cache_status |';
  
    access_log  logs/access_http.log  access;
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    keepalive_timeout  65;
    send_timeout       600;
	
    upstream gw-api-7004 {
            server 192.178.14.9:7004  max_fails=3 fail_timeout=30s;
            server 192.178.14.10:7004 max_fails=3 fail_timeout=30s;
    } 
	
    server {
        listen       80;
        server_name  localhost;

        rewrite ^(.*)$  https://$host$1 permanent;
    }
	
    server {
        listen       443;
        server_name  api.yufa.com;

        ssl on;
        root html;
        index index.html index.htm;
        ssl_certificate   /app/cert/yufa.com.pem;
        ssl_certificate_key  /app/cert/yufa.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        allow 171.10.0.0/16;
        allow 171.11.0.0/16;
        allow 171.120.0.0/16;
        allow 171.191.0.0/16;
        allow 171.201.0.0/16;
        allow 100.33.0.0/16;
        allow 100.1.10.12;
        allow 100.100.249.11;
        deny all;

        location / {
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header Host $host;
             proxy_buffering off;

             proxy_pass  http://gw-api-7004;
             }    

        location /publish {
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header Host $host;

             proxy_pass  http://api.app.yufa.fy.cn:8008;
             }

        location /config/server/configs {
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header Host $host;

             proxy_pass  http://yufa.app.yufa.yf.cn:8001;
             }

        location /nginx_status {
             stub_status on;
             access_log off;
             allow 127.0.0.1;
             allow 100.0.0.0/8;
             deny all;
        }
    }

}






总结:这个项目中日常会使用到的一些参数,可以帮助到家,对大家有记得点赞哦!!!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:30:52  更:2022-05-08 08:32:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:43:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码