Nginx常用基本配置总结:从入门到实战的全方位指南

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
日志服务 SLS,月写入数据量 50GB 1个月
网络型负载均衡 NLB,每月750个小时 15LCU
简介: Nginx常用基本配置总结:从入门到实战的全方位指南
一、什么是Nginx

Nginx 是开源的轻量级 Web 服务器、反向代理服务器,以及负载均衡器和 HTTP 缓存器。其特点是高并发,高性能和低内存。

Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,最大能支持 50000 个并发连接数。 Nginx 还支持热部署,它的使用特别容易,几乎可以做到 7x24 小时不间断运行。

二、Nginx 的常用功能
1、正向代理及反向代理

其主要有以下几点区别:

  • 代理对象不同。正向代理代理的是客户端,反向代理代理的是服务器。正向代理帮助客户访问其无法访问的服务器资源,反向代理帮助服务器做负载均衡,另外,由于客户端跟真实服务器不直接接触,能起到一定安全防护的作用。
  • 架设主体不同。正向代理一般是客户端架设的,比如在自己的机器上装一个代理软件,反向代理一般是服务器架设的,通常是在机器集群中部署个反向代理服务器。
  • 保护对象不同。正向代理保护对象是客户端,反向代理保护对象是原始资源服务器。
  • 作用目的不同。正向代理主要目的是解决访问限制问题,而反向代理一方面是作为负载均衡,再就是起到安全防护的作用。
2、负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。

内置策略为轮询,加权轮询,Ip hash。

扩展策略,就天马行空,只有你想不到的没有他做不到的啦。

我们日常中最常见的三种nginx的负载均衡策略应当为(轮询、权重、ip绑定)。

3、web缓存

Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。


三、Nginx配置文件结构

安装nginx的时候默认配置文件位置为/etc/nginx 下,默认的配置文件为nginx.conf ,nginx配置文件在/etc/nginx/nginx.conf

nginx.conf

Nginx服务器的基础配置,默认的配置也存放在nginx.conf中,它的配置文件都是以block的形式组织的,每个block一般都是以括号“{}”来表示的。主要包括全局,event,http,server等设置,event主要定义nginx的工作模式,http提供web功能,server用来设置虚拟主机,server可以存在多个。主要包含以下几个部分:


1、 全局块

主要设置一些影响 nginx 服务器整体运行的配置指令。包括运行 nginx 的用户组,进程存放,日志,配置文件等。


比如: worker_processes 1; worker_processes 值越大,可以支持的并发处理量就越多。


2、events块

events 块涉及的指令主要影响Nginx服务器与用户的网络连接。包括进程最大连接数,数据驱动模型,序列化等。


比如: worker_connections 1024; ,支持的最大连接数。

3、http块

http 块又包括 http 全局块和 server 块,是服务器配置中最频繁的部分,包括配置代理,缓存,日志,第三方模块等,可嵌套多个 server。


server块:配置虚拟主机的相关参数。


location块(URL匹配特定位置的设置):配置请求路由,以及各种页面的处理情况。


upstream(负载均衡服务器设置):指令主要用于负载均衡,设置一系列的后端服务器,upstream后的名称和后面的 proxy_pass要对应起来。


四、配置示例
#全局配置 =========================================================

#指定nginx运行的用户及用户组,默认为nobody。
#user administrator administrators;  

#允许生成的进程数,默认为1
#worker_processes 2;  

#指定nginx进程运行文件存放地址
#pid /nginx/pid/nginx.pid;  

#定位全局错误日志文件,级别。这个设置可以放入全局块,http块,server块。
#级别以此为:debug|info|notice|warn|error|crit|alert|emerg。
#debug输出最多,crir输出最少,根据实际环境而定
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;


#events 配置 =======================================================
events {
    #设置网路连接序列化,防止惊群现象发生,默认为on
    accept_mutex on;   

    #设置一个进程是否同时接受多个网络连接,默认为off
    multi_accept on;  

    #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    #use epoll; 

    #最大连接数,默认为512
    worker_connections  1024;    
}

#http 配置 =========================================================
http {
    #文件扩展名与文件类型映射表
    include       mime.types;   

    #默认文件类型,默认为text/plain
    default_type  application/octet-stream;

    #自定义格式,main为日志格式的名称,可自行设置,后面引用
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                            '$status $body_bytes_sent "$http_referer" '
    #                          '"$http_user_agent" "$http_x_forwarded_for"';

    #引用日志main格式    
    #access_log  logs/access.log  main; 

    #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile on;   

    #连接超时时间,默认为75s,0;  无限时间,可以在http,server,location块。
    keepalive_timeout 65;  

    #开启gzip压缩
    gzip  on;

    #负载均衡服务器设置
    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #热备
    }

    #访问异常页面配置
    error_page 404 https://www.baidu.com; 

    #配置虚拟主机的相关参数
    server {
        #单连接请求上限次数。
        keepalive_requests 120; 
        
        #监听端口
        listen       4545;   

        #监听地址,可以是ip,可以是域名
        server_name  127.0.0.1; 

        #设置主机基本信息,请求路由,以及各种页面的处理情况   
        location / {  #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
            #根目录
            root   html; 
 
            #设置默认页
            index  index.html index.htm; 

            #请求转向mysvr 定义的服务器列表
            #proxy_pass  http://mysvr;  
        }
    }

}


五、nginx http模块配置实例及日常使用命令
1、反向代理
server {
        listen       80;   
        server_name  192.168.4.32;   #监听地址
   
        location  / {       
           root html;  #/html目录
           proxy_pass http://127.0.0.1:8080;  #请求转向
           index  index.html index.htm;      #设置默认页       
        } 
    }
2、负载均衡

在浏览器地址栏输入 http://192.168.4.32:80,平均到 5000 和 8080 端口中,实现负载均衡效果。

upstream myserver {   
      server 192.167.4.32:5000;
      server 192.168.4.32:8080;
    }
    server {
        listen       80;   #监听端口
        server_name  192.168.4.32;   #监听地址
   
        location  / {       
           root html;  #html目录
           index index.html index.htm;  #设置默认页
           proxy_pass  http://myserver;  #请求转向 myserver 定义的服务器列表      
        } 
    }
3、Log排错

在conf中有两个log地址, 一个定义在全局块 ,一个定义在http的access.log中。

/var/log/nginx/error.log
/var/log/nginx/access.log
4、不重启的情况下加载配置

测试是否写对了:

nginx -t

不重启服务的情况下,加载新的内容:

nginx -s reload
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
4月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
580 87
|
4月前
|
负载均衡 应用服务中间件 nginx
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
|
2月前
|
应用服务中间件 网络安全 nginx
配置Nginx以支持Websocket连接的方法。
通过上述配置,Nginx将能够理解WebSocket协议的特殊要求,代理Websocket流量到合适的后端服务器。注意,Websocket并不是HTTP,尽管它最初是通过HTTP请求启动的连接升级,因此保证Nginx了解并能够妥善处理这种升级流程是关键。
470 10
|
3月前
|
安全 应用服务中间件 网络安全
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
233 0
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
|
3月前
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
177 3
|
10月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
684 7
|
6月前
|
应用服务中间件 nginx
Nginx进程配置指令详解
Nginx进程配置指令主要包括:`worker_processes`设置工作进程数;`worker_cpu_affinity`绑定CPU核心;`worker_rlimit_nofile`设置最大文件描述符数量;`worker_priority`设置进程优先级;`worker_connections`设置最大连接数;`daemon`控制守护进程模式;`master_process`启用主进程模式;`pid`设置PID文件路径;`user`指定用户和组;`error_log`配置错误日志。这些指令在`nginx.conf`中配置,用于优化和控制Nginx的运行行为。
271 10
|
10月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
451 61
|
10月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
577 60
|
10月前
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
578 60