返回顶部
首页 > 资讯 > 服务器 >nginx常用配置
  • 867
分享到

nginx常用配置

nginx运维服务器 2023-09-07 09:09:20 867人浏览 独家记忆
摘要

目录 1、全局块 2、events块 3、http块 3.1、http基本配置 3.2、http反向代理基本配置 3.3、http反向代理服务器和负载均衡 3.4、http_gzip配置 3.5、server相关配置 3.5.1、serv

目录

1、全局块

2、events块

3、http块

3.1、http基本配置

3.2、http反向代理基本配置

3.3、http反向代理服务器和负载均衡

3.4、http_gzip配置

3.5、server相关配置

3.5.1、server基础配置

3.5.2、ssl配置

3.5.3、location配置

4、一个简单的nginx配置实例


1、全局块

        所有在Nginx.conf内但不在任何{}中的指令。

        通常包括配置运行Nginx服务器的用户(组)、允许生成的worker process数、Nginx进程PID存放路径、日志的存放路径和类型等。

        Nginx 配置中,以 / 开头的路径表示绝对路径,不以 / 开头的路径表示相对路径,相对路径的根目录为 Nginx 的根目录。

# 1、指定可以运行nginx服务的用户和用户组:user [user] [group]# 如果不配置,或配置nobody,则所有用户都可运行nginxuser myUser myGroup;# 2、指定工作线程数(一般设置为CPU核心数):worker_processes number | auto;worker_processes 4; # 生成一个master进程和4个worker进程# 3、指定pid文件存放的路径pid /user/local/nginx/nginx.pid;# 4、指定错误日志的路径和日志级别,其中debug级别的日志需要编译时使用--with-debug开启debug开关# 日志级别:debug|info|notice|warn|error|crit|alert|emergerror_log logs/error.log debug;

2、events块

        所有写在 events{} 中的指令。

        events中的指令主要影响Nginx服务器与用户的网络连接。

events {# 1、设置网路连接序列化,默认on    # 当某一时刻只有一个网络连接到来时,多个睡眠进程会被同时叫醒,但只有一个进程可获得连接。如果每次唤醒的进程数目太多,会影响一部分系统性能。    # 开启后,会对多个Nginx进程接收连接进行序列化,防止惊群现象accept_mutex on;# 2、一个进程是否同时接受多个网络连接,默认offmulti_accept on;# 3、事件驱动模型:select、poll、kqueue、epoll、rtsig、/dev/poll以及eventportuse epoll;# 4、最大连接数worker_connections  1024;}

3、Http

3.1、http基本配置

http {# 1、引入文件扩展名与文件类型映射表:根据WEB服务器请求的静态资源后缀,通过mime.types映射,设置Response的Content-Type# include指令:用于包含其他的配置文件include mime.types;# 2、默认文件类型:默认为text/plaindefault_type  application/octet-stream;# 3.1、是否开启服务日志:记录Nginx服务器提供服务过程应答前端请求的日志access_log off;# 3.2、自定义服务日志格式log_fORMat myLogFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';# 3.3、设置日志的格式access_log log/access.log myLogFormat;# 4.1、是否开启高效文件传输模式# 指定nginx是否调用 sendfile 函数来输出文件,减少用户空间到内核空间的上下文切换;# 对于普通应用设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载sendfile on;# 4.2、每个进程每次最大传输值,默认为0,不限制大小sendfile_max_chunk 100k;# 5、长连接超时时间(秒)# 在请求大量小文件的时候,可以减少重建连接的开销;# 但如果上传大文件时在设置的超时时间内没上传完成会导致失败,如果设置时间过长,用户又多,长时间保持连接会占用大量资源;keeplive_timeout 100;# 6、单连接请求数上限:限制用户通过某一连接向Nginx服务器发送请求的次数keepalive_requests 100;# 7、响应客户端的超时时间(秒)send_timeout 75;# 8、客户端请求头的区缓冲区大小client_header_buffer_size 32k;# 9、客户端请求头的最大缓冲区数量和大小large_client_header_buffers 8 32k;# 10、允许客户端请求的最大字节数client_max_body_size  10m;# 11、客户端请求体的缓冲区大小client_body_buffer_size  128k;}

3.2、http反向代理基本配置

http {    proxy_connect_timeout 90;  # nginx跟后端服务器连接超时时间(代理连接超时)proxy_send_timeout 90;     # 后端服务器数据回传时间(代理发送超时)proxy_read_timeout 90;     # 连接成功后,后端服务器响应时间(代理接收超时)proxy_buffer_size 4k;      # 从nginx读取并保存用户头信息的缓冲区大小proxy_buffers 4 32k;      # 代理缓冲区数量和大小proxy_busy_buffers_size 64k;     # 高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 64k;  # 设定缓存文件夹大小proxy_set_header Host $host; # 后台可以获取到完整的ip+端口号proxy_set_header X-Forwarder-For $remote_addr;  #后台可以获取到用户访问的真实ip地址}

3.3、http反向代理服务器和负载均衡

http {upstream product_server { # 权重,默认为1,权值越高被分配到的几率越大server 192.168.1.11:8880   weight=5;# 标识当前的server暂时不参与负载server 192.168.1.12:9990   down;# 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。server 192.168.1.13:8989   backup;# max_fails:允许请求失败的最大次数,默认为1,当超过最大次数时,返回proxy_next_upstream 模块定义的错误.# fail_timeout: max_fails次失败后,暂停的时间server 192.168.1.14:8989   max_fails=2 fail_timeout=60s;}}

3.4、http_gzip配置

        启用Gzip压缩功能,可以在网站的js、xml、html等静态资源进行数据传输时进行gzip压缩,压缩后的资源可以变为原来的30%甚至更小。虽然会消耗一定的CPU资源,但是会节约大量的出口带宽来提升访问速度。
        服务器端压缩,传到浏览器后解压并解析。
        不建议压缩图片和大文件。jpg、png等图片资源本身就有压缩,开启gzip后,区别不大;大文件压缩会消耗大量的CPU资源,且性能提升效果不一定明显。

http {    gzip on;# 开启gzip压缩    gzip_min_length 1K;# 设置压缩的最小字节数(资源达到该大小才压缩,建议设置成大于1K)    gzip_buffers  4  16k;# 获取多少个单位的缓存用于存储gzip的压缩结果数据流,4 16k表示按照原始数据大小以16k为单位的4倍进行内存申请;    gzip_http_version 1.0;  # http协议版本    gzip_comp_level 6;# zip压缩比:为1时,压缩比最小处理速度最快;为9时,压缩比最大但处理速度最慢。# 设置需要压缩哪些响应类型的资源    gzip_types text/plain text/CSS application/JSON;    gzip_proxied any;# 开启或者关闭 后端服务器返回的结果是否压缩    gzip_vray on;# 开启后,可以让前端的缓存服务器缓存经过gzip压缩的页面}

3.5、server相关配置

3.5.1、server基础配置

http {...server {# 1、监听端口:可配置监听ip、端口、ip:端口三种形式listen 8080;# 2、监听服务器地址(IP/域名)server_name 172.27.8.22;# 3、每个连接请求上限次数keepalive_requests 120;# 4、字符集charset utf-8;# 5、服务日志所在目录以及日志格式(日志格式可直接引用http配置的日志格式)access_log logs/host.log myLogFormat;# 6、错误页error_page  404  /404.html;error_page  500 502 503 504  /50x.html;}}

3.5.2、ssl配置

如果请求方式是https请求的话,是需要证书,这时就要对https请求设置ssl。

http {server {# SSL 访问端口号为 443  listen 443 ssl;  # 填写绑定证书的域名  server_name cloud.xxx.com; # 开启 sslssl on;# ssl 证书路径ssl_certificate /opt/ssl/nginx.crt;# ssl 证书秘钥ssl_certificate_key /opt/ssl/nginx.key;# ssl 会话超时时间ssl_session_timeout 1d;# ssl 缓存ssl_session_cache shared:SSL:50m;# ssl 会话票据ssl_session_tickets off;# ssl 协议版本ssl_protocols TLSv1.2;# ssl 密码套件ssl_ciphers  'HIGH:!aNULL:!MD5';# 开启 ssl 服务密码套件ssl_prefer_server_ciphers on;}}

3.5.3、location配置

        基于Nginx服务器接收到的请求字符串,对除虚拟主机名称之外的字符串进行匹配,对特定的请求进行处理,完成地址定向、数据缓存和应答控制等功能。

http {server {# 1、路由匹配规则:location模块监听的url地址,url只有匹配正确才会进入该location块:location [ = | ~ | ~* | ^~ ] uri { ... }# "=":用于标准uri前,要求请求字符串与uri严格匹配。# "^~":用于标准uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。# "~":用于表示uri包含正则表达式,并且区分大小写。# "~*":用于表示uri包含正则表达式,并且不区分大小写。注意如果uri包含正则表达式,就必须要使用“~”或者“~*”标识。location  匹配规则 {# 2、服务器的默认网站根目录位置,root指令:定义服务器的默认网站根目录位置# 假设请求为/t/a.html# root /var/www/html; # 会返回/var/www/html/t/a.html的资源alias /var/www/new_html; # 会返回/var/www/new_html/a.html的资源# 3、默认访问的文件名index  index.html index.htm index.jsp;# 4.1、拒绝的 IPdeny 192.168.56.21;# 4.2、允许的 IP allow 192.168.56.10;# 5.1、跨域、请求头配置add_header Access-Control-Allow-Origin * always;# 5.2、是否允许信任证书add_header Access-Control-Allow-Credentials 'true' always;# 5.3、允许的请求头类型add_header Access-Control-Allow-Headers * always;# 5.4、设置允许的请求方式add_header Access-Control-Allow-Methods 'PUT, GET, POST, DELETE, OPTIONS' always;# 5.5、处理 OPTIONS 请求if ($request_method = 'OPTIONS') {return 204;}}location ~/product{# 反向代理服务器proxy_pass http://product_server;# 是否重定向代理服务器地址proxy_redirect off;proxy_set_header Host $host; # 后台可以获取到完整的ip+端口号proxy_set_header X-Forwarder-For $remote_addr;  #后台可以获取到用户访问的真实ip地址}}}

4、一个简单的nginx配置实例

# 定义Nginx运行的用户和用户组# user  myUser myGroup;# nginx进程数worker_processes 4;# 全局错误日志定义类型error_log /usr/local/nginx/logs/error.log info;# 进程pid文件pid /usr/local/nginx/logs/nginx.pid;events {# 事件驱动模型:select、poll、kqueue、epoll、rtsig、/dev/poll以及eventportuse epoll;# 最大连接数worker_connections  1024;}http {# 引入文件扩展名与文件类型映射表:根据WEB服务器请求的静态资源后缀,通过mime.types映射,设置Response的Content-Type# include指令:用于包含其他的配置文件include mime.types;# 默认文件类型:默认为text/plaindefault_type  application/octet-stream;# 允许客户端请求的最大字节数client_max_body_size  10m;# 开启服务日志:记录Nginx服务器提供服务过程应答前端请求的日志access_log on;# 自定义服务日志格式log_format myLogFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';# 设置日志的格式access_log log/access.log myLogFormat;# 开启高效文件传输模式# 指定nginx是否调用 sendfile 函数来输出文件,减少用户空间到内核空间的上下文切换;# 对于普通应用设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载sendfile on;# 每个进程每次最大传输值,默认为0,不限制大小# sendfile_max_chunk 100k;# 长连接超时时间(秒)# 在请求大量小文件的时候,可以减少重建连接的开销;# 但如果上传大文件时在设置的超时时间内没上传完成会导致失败,如果设置时间过长,用户又多,长时间保持连接会占用大量资源;keeplive_timeout 100;# 响应客户端的超时时间(秒)send_timeout 75;proxy_buffer_size 1024k;      # 从nginx读取并保存用户头信息的缓冲区大小proxy_buffers 16 1024k;      # 代理缓冲区数量和大小proxy_busy_buffers_size 4096k;     # 高负荷下缓冲大小(proxy_buffers*2)upstream product_server { # 权重,默认为1,权值越高被分配到的几率越大server 192.168.1.11:8880   weight=5;# 标识当前的server暂时不参与负载server 192.168.1.12:9990   down;# 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。server 192.168.1.13:8989   backup;# max_fails:允许请求失败的最大次数,默认为1,当超过最大次数时,返回proxy_next_upstream 模块定义的错误.# fail_timeout: max_fails次失败后,暂停的时间server 192.168.1.14:8989   max_fails=2 fail_timeout=60s;}upstream project_server {server 192.168.1.11:8880;}    server {        listen       8888;server_name  localhost;# 跨域、请求头配置add_header Access-Control-Allow-Origin * always;add_header Access-Control-Allow-Credentials 'true' always;add_header Access-Control-Allow-Headers * always;add_header Access-Control-Allow-Methods 'PUT, GET, POST, DELETE, OPTIONS' always;if ($request_method = 'OPTIONS') {return 204;}location / {       root   /usr/local/applications/front/build/;index  index.html index.htm;}location ^~/product {rewrite ^/product/(.*)$ /$1 break;# 重写url,去掉url中的productproxy_pass http://product_server;proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址}location ~/(project|test) {proxy_pass http://project_server;proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址}        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}

以上内容为个人学习理解,如有问题,欢迎在评论区指出。

部分内容截取自网络,如有侵权,联系作者删除。

来源地址:https://blog.csdn.net/weixin_37672801/article/details/127659078

--结束END--

本文标题: nginx常用配置

本文链接: https://lsjlt.com/news/397963.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • nginx常用配置
    目录 1、全局块 2、events块 3、http块 3.1、http基本配置 3.2、http反向代理基本配置 3.3、http反向代理服务器和负载均衡 3.4、http_gzip配置 3.5、server相关配置 3.5.1、serv...
    99+
    2023-09-07
    nginx 运维 服务器
  • Nginx的一些常用配置汇总
    目录Nginx配置文件结构Nginx日志切割root 与 alias使用GZIP压缩提升请求效率location匹配规则解析使用SwitchHosts模拟本地域名解析Nginx跨域配...
    99+
    2024-04-02
  • Nginx常用的基础配置方案
    本篇内容主要讲解“Nginx常用的基础配置方案”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx常用的基础配置方案”吧!Nginx的fastcgi模块参数设置Nginx 有两个配置文件fa...
    99+
    2023-06-04
  • Nginx常用配置及代理转发
    Nginx配置及代理转发 nginx配置:配置分离:Nginx配置静态资源:Nginx配置转发其他应用:Nginx配置跨域访问:Nginx配置域名通配符访问:Nginx配置https:Nginx配置不同终端的转发: nginx配...
    99+
    2023-08-21
    nginx 服务器 运维
  • Nginx各个模块的配置及常用配置选项
    目录Nginx Location配置请求转发和重定向Nginx静态文件配置文件下载服务器Nginx配置HTTPSNginx日志配置Nginx超时设置请求超时设置Proxy反向代理超时...
    99+
    2024-04-02
  • Nginx的几个常用配置和技巧
    文章列举了几个Nginx常见的,实用的,有趣的配置,希望看过之后能说一句:学到了!一个站点配置多个域名server {    listen    &n...
    99+
    2023-06-03
  • Nginx安装后常用功能如何配置
    这篇文章主要介绍“Nginx安装后常用功能如何配置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Nginx安装后常用功能如何配置”文章能帮助大家解决问题。1.主配置文件与虚拟主机分离如果虚拟主机很多...
    99+
    2023-06-29
  • 超实用 nginx 中常见的配置合集
    ✨ 目录 🎈 封禁 IP🎈 仅开放内网🎈 负载均衡🎈 列出文件列表🎈 路由转发🎈 开启...
    99+
    2023-09-04
    nginx 服务器 运维 经验分享 原力计划
  • Nginx 中常见 header 配置及修改
    在 nginx 中,经常需要因为各种原因,修改 header,所以今天整理下 nginx 中 header 的一些指令 header 是 http 中的消息头,里面包含很多信息,通常又分为 request headers(请求头)和 res...
    99+
    2023-08-31
    nginx php 服务器
  • Nginx安装后常用功能配置基础篇
    目录1.主配置文件与虚拟主机分离利用server模块创建www和bbs两个虚拟站点2.虚拟主机别名设置3.Nginx status状态信息配置4.增加错误日志1.主配置文件与虚拟主机...
    99+
    2024-04-02
  • nginx常用配置conf的示例代码详解
    nginx常用配置conf 代理静态文件 # 静态文件 server { # 压缩问价你配置 gzip on; gzip_min_length 1k; ...
    99+
    2024-04-02
  • Nginx常用配置及和基本功能讲解
    Nginx是一个高性能的Web服务器和反向代理服务器,常用于构建高可用、高并发的Web应用。下面是Nginx的常用配置及基本功能的讲...
    99+
    2023-09-20
    Nginx
  • 超实用的Nginx常见配置合集分享
    目录封禁 IP仅开放内网负载均衡列出文件列表路由转发开启 gzip 压缩解决跨域资源防盗链Keepalived 提高吞吐量HTTP 强制跳转 HTTPS封禁 IP 通过 deny 可...
    99+
    2024-04-02
  • nginx+php配置
    安装php yum install php #检查版本 php -v 安装nginx(根据我们自己的Nginx安装,以下可以不看) yum install nginx或者执行下面的步骤: 安装: 1.在vim /etc/p...
    99+
    2023-08-31
    nginx php 运维
  • Docker配置nginx
    1.Docker安装nginx 安装的命令 sudo docker search nginxdocker pull nginx 查看是否安装 docker images 运行测试nginx docker run --name nginx-...
    99+
    2023-08-20
    docker nginx 运维 ubuntu 服务器
  • Nginx配置使用详解
    配置步骤: 1、配置nginx的方法:首先要打开“/etc/nginx/conf.d/”文件夹; 2、然后创建配置文件;接着在“/etc/ngi...
    99+
    2024-04-02
  • nginx 限流配置
    限流算法令牌桶算法算法思想是:令牌以固定速率产生,并缓存到令牌桶中;令牌桶放满时,多余的令牌被丢弃;请求要消耗等比例的令牌才能被处理;令牌不够时,请求被缓存。漏桶算法算法思想是:水(请求)从上方倒入水桶,从水桶下方流出(被处理);来不及流出...
    99+
    2023-06-05
  • Nginx--server块配置
    server_name 指令 server_name:用来设置虚拟主机服务名称。 语法server name name …默认值server_name “”位置server 关于server_name的配置方式 1.精确匹配 2.通配符匹配...
    99+
    2023-08-30
    nginx 服务器 正则表达式
  • Nginx超时配置
    Nginx超时配置 Nginx主要有四类超时设置:客户端超时设置、DNS解析超时设置、代理超时设置,如果使用ngx_lua,则还有lua相关的超时设置。 1.客户端超时设置 对于客户端超时主要设置有读...
    99+
    2023-10-05
    nginx lua java
  • nginx跨域配置
    nginx跨域配置 Access-Control-Allow-OriginAccess-Control-Allow-HeadersAccess-Control-Allow-MethodsAcc...
    99+
    2023-09-01
    nginx 服务器 运维
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作