web服务器之nginx实践

发布于:2025-08-05 ⋅ 阅读:(12) ⋅ 点赞:(0)

web服务器之nginx实践

1.官方网站:http://nginx.org/,下载源码包

2.Nginx版本分为主线版、稳定版和历史版本,在官方网站中,Mainline version表示目前主力在做的版本,可以说是开发版,开发版更新速度较快,从官网上看大约一个月更新1-2次,Stable version表示最新稳定版,也就是生产环境上建议使用的版本。Legacy versions表示遗留的历史稳定版。本章我们以Stable version最新版本为例进行介绍。1、安装NginxNginx可以通过源码方式、yum方式进行安装,根据线上环境部署经验,推荐采用源码方式进行安装。目前Nginx最新稳定版本为Nginx1.24.0,下面的安装就使用这个版本进行介绍。这里约定本章软件安装环境,如无特殊说明均使用红帽系列发行版。在安装操作系统的安装软件配置部分,建议选择“Server with GUI”,并选择“Development Tools”和“Compatibility Libraries”两项附加软件。确保gcc、libgcc、gcc-c++等编译器已经正确安装。2、Nginx的依赖程序在安装Nginx之前,需要安装一些Nginx的依赖程序,Nginx的主要依赖程序有zlib、pcre、openssl三个,其中,zlib用于支持gzip模块,pcre用于支持rewrite模块,openssl用于支持ssl功能,为了简单快捷,推荐通过yum安装zlib、pcre、openssl软件包,

安装方式如下:[root@centos ~]# yum -y install zlib pcre pcre-devel openssl openssl-devel

3.![image-20250720150222965](C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20250720150222965.png)

![image-20250720150407292](C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20250720150407292.png)

**--with-openssl是重点,一般来说openssl的默认库版本比较低。**

4.nginx的配置文件

/usr/local/nginx/conf/nginx.conf

nginx的网页文件

/usr/local/nginx/html/index.html

nginx的日志文件

/usr/local/nginx/logs

nginx的脚本文件

/usr/local/nginx/sbin/nginx

5.编写nginx启动脚本(可以是service脚本也可以是shell脚本)

vi /etc/systemd/system/nginx.service

[Unit]

Description=The nginx HTTP and reverse proxy server

After=network.target remote-fs.target nss-lookup.target

##服务的描述信息,说明这是 Nginx HTTP 和反向代理服务器

[Service]

Type=forking

##表示 Nginx 以 **守护进程(daemon)** 方式运行(主进程会 fork 子进程)。

systemd 需要通过 `PIDFile` 跟踪主进程

PIDFile=/usr/local/nginx/logs/nginx.pid

##指定 Nginx 主进程的 PID 文件路径,systemd 通过此文件管理服务。

ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid  

ExecStartPre=/usr/local/nginx/sbin/nginx -t

##在启动主服务前执行的命令(按顺序执行):

1. `rm -f ...`:强制删除旧的 PID 文件(避免冲突)。

2. `nginx -t`:测试配置文件语法是否正确(如果测试失败,服务不会启动)

ExecStart=/usr/local/nginx/sbin/nginx

##启动服务的核心命令,这里是运行 Nginx 二进制文件

ExecReload=/bin/kill -s HUP $MAINPID

KillSignal=SIGQUIT

TimeoutStopSec=5

KillMode=process

PrivateTmp=true

##

- **`ExecReload`**:

  重载服务时执行的命令:

  `kill -s HUP $MAINPID` 向 Nginx 主进程发送 `HUP` 信号(平滑重载配置)。

- **`KillSignal=SIGQUIT`**:

  停止服务时发送的信号(`SIGQUIT` 让 Nginx 优雅退出)。

- **`TimeoutStopSec=5`**:

  停止服务的超时时间(5 秒后强制终止)。

- **`KillMode=process`**:

  仅杀死主进程(不杀死子进程,由 Nginx 自己管理子进程)。

- **`PrivateTmp=true`**:

  为服务分配独立的临时目录(增强安全性)。

[Install]

WantedBy=multi-user.target

##

- **`WantedBy`**:

  定义服务所属的 **systemd 目标**。

  `multi-user.target` 表示在系统多用户模式(非图形界面)下启用此服务。

systemctl daemon-reload

systemctl start nginx

6.查看编译时候用了哪些参数

cd     /usr/local/nginx/sbin

[root@czkmaster1 sbin]# ./nginx -V

nginx version: nginx/1.23.3

built by gcc 8.5.0 20210514 (Red Hat 8.5.0-26) (GCC)

configure arguments:

7. nginx配置文件

### 1. Main(全局块)

- **作用**:定义 Nginx 最基础、全局生效的配置,如 `worker_processes`(工作进程数,影响并发处理能力 )、`error_log`(错误日志路径)、`pid`(进程 ID 文件位置 )等。

- **特点**:配置项作用于 Nginx 整个运行实例,不依赖特定协议或业务场景。

### 2. Events(事件块)

- **作用**:聚焦 Nginx 网络事件处理,比如 `worker_connections`(单个工作进程最大连接数 )、`use epoll`(选择事件驱动模型,Linux 下 epoll 性能最优 )。

- **特点**:控制 Nginx 如何高效处理客户端连接、网络事件,与操作系统 I/O 模型深度关联。

### 3. HTTP(HTTP 块)

- **作用**:封装所有 HTTP 协议相关配置,是 Web 服务的核心容器。可定义 `include mime.types`(加载 MIME 类型映射 )、`default_type application/octet-stream`(默认响应类型 ),还能嵌套 `Server` 块实现多站点管理。

- **特点**:隔离 HTTP 服务与其他协议(如邮件服务)的配置,让 Web 相关规则集中管理。

### 4. Server(服务器块)

- **作用**:对应一个虚拟主机(站点),配置域名(`server_name` )、监听端口(`listen` )、日志路径(`access_log` )等。比如区分 `www.example.com` 和 `blog.example.com` 的不同站点规则。

- **特点**:实现多域名、多端口的站点隔离,每个 `Server` 可独立定义业务逻辑。

### 5. Location(定位块)

- **作用**:细化 `Server` 内的 URI 匹配规则,决定不同路径(如 `/api`、`/static` )的请求如何处理。可配置反向代理(`proxy_pass` )、静态文件根目录(`root` )、访问权限(`allow/deny` )等。

- **特点**:通过正则、前缀匹配等语法,精准控制请求的路由与处理逻辑,是实现动静分离、接口转发的关键。

8.nginx配置文件解读

user:指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行,这里指定用www用户和组运行。

worker_processes:设置nginx工作的进程数,一般来说,设置成CPU核的数量即可,这样可以充分利用CPU资源,可通过如下命令查看CPU核数:

grep ^processor /proc/cpuinfo | wc –l

在nginx1.10版本后,worker_processes指令新增了一个配置值auto,它表示nginx会自动检测CPU核数并打开相同数量的worker进程。

worker_cpu_affinity:此指令可将Nginx工作进程与指定CPU核绑定,降低由于多核CPU切换造成的性能损耗

worker_cpu_affinity使用方法是通过1、0来表示的,CPU有多少个核?就有几位数,1代表内核开启,0代表内核关闭,例如:有一个4核的服务器,那么nginx配置中worker_processes、worker_cpu_affinity的写法如下:worker_processes  4;worker_cpu_affinity 0001 0010 0100 1000;

上面的配置表示:4核CPU,开启4个进程,每个进程都与CPU的每个核进行绑定。其中,0001表示开启第一个cpu内核,0010表示开启第二个cpu内核,其它含义依次类推。如果是8核CPU,绑定第一个CPU核,可以写成00000001,绑定第二个CPU核,可以写成00000010,依次类推。

worker_cpu_affinity指令一般与worker_processes配合使用,以充分发挥nginx的性能优势

9.error_log:用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。

**一般来说使用notice**

pid:用来指定进程id的存储文件位置

worker_rlimit_nofile:用于指定一个Nginx进程可以打开的最多文件描述符数目,这里是65535,需要使用命令“ulimit -n 65535”来设置

events:设定Nginx的工作模式及连接数上限。其中参数“use”用来指定Nginx的工作模式,Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,对于Linux系统,epoll工作模式是首选。而参数“worker_connections”用于定义Nginx每个进程的最大连接数,默认是1024。在一个纯Nginx(无反向代理应用)应用中,最大客户端连接数由worker_processes和worker_connections决定,即为:**max_client=worker_processes*worker_connections**

**进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效(需要注意的是,执行完这条命令必须重启nginx服务,不然nginx识别不到)**

10.nginx **HTTP**服务器配置解读

include:是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。类似于Apache中的include方法。

**default_type:属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口**

log_format:用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用。

Sendfile on:用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞

keepalive_timeout:设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接

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

client_max_body_size 30m:用来设置允许客户端请求的最大的单个文件字节数

client_header_buffer_size 32k:用于指定来自客户端请求头的header  buffer大小。对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为32K

large_client_header_buffers 4 128k:用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“128K”为大小,最大缓存量为4个128K

11**.HTTP Gzip**配置模块

gzip on:用于设置开启或者关闭gzip模块,“gzip on”表示开启GZIP压缩,实时压缩输出数据流。

gzip_min_length 1k:设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。

gzip_buffers 4 16k:表示申请4个单位为16K的内存作为压缩结果流缓存,默认是申请与原始数据大小相同的内存空间来存储gzip压缩结果。

gzip_http_version  1.1:用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。

gzip_comp_level  2:用来指定GZIP压缩比,1表示压缩比最小,处理速度最快;9表示压缩比最大,传输速度快,但处理最慢,也比较消耗CPU资源。

gzip_types  text/plain application/x-javascript text/css application/xml:用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的。

12.**server虚拟主机配置**

server:定义虚拟主机开始的关键字。

listen:用于指定虚拟主机的服务端口。

server_name:用来指定IP地址或域名,多个域名之间用空格分开。

index:用于设定访问的默认首页地址。

root:用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。

access_log:用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式。error_page指令可以定制各种错误信息的返回页面。在默认情况下,Nginx会在主目录的html目录中查找指定的返回页面,特别需要注意的是,这些错误信息的返回页面的大小一定要超过512K,否者会被IE浏览器替换为IE默认的错误页面。

13.nginx实战文件配置

grep -c processor /proc/cpuinfo  # 查看逻辑CPU核心数

user  www; ##指定用户

worker_processes  4; ##cpu总数

worker_cup_affinity 0001 0010 0100 1000; ##指定分配的cpu

error_log  logs/error.log notice;##定义错误日志的存储路径和记录级别。

pid /usr/local/nginx/logs/nginx.pid;##指定 Nginx **主进程(Master Process)的 PID 文件路径**。

sudo find / -name "nginx.pid" 2>/dev/null ##查找nginx pid文件路径

worker_rlimit_nofile 655360;##一个进程文件打开最大数

`use epoll;`

- 这是事件驱动模型配置,指定 Nginx 使用 epoll 作为事件通知机制

- epoll 是 Linux 2.6+ 内核的高效 I/O 多路复用机制

- 相比 select/poll,epoll 能显著提升高并发连接下的性能

- 特别适合连接数多但活动连接比例低的场景

  `worker_connections 65536;`

  - 设置每个 worker 进程可以同时处理的最大连接数

  - 默认值通常是 512 或 1024

  - 这里设置为 65536,表示单个 worker 可处理 6.5 万并发连接

  - 实际总并发能力 = worker_processes × worker_connections

 include mime.types;

 作用:加载外部的 MIME 类型配置文件。

 

 default_type application/octet-stream;

 作用:设置默认的 MIME 类型。

 application/octet-stream

 表示“二进制流文件”,是通用的未知文件类型。

 浏览器遇到此类型时,通常会触发下载行为(而不是直接显示)。

 使用场景

 当请求的文件扩展名未在 mime.types 中定义时,Nginx 会使用此默认类型。

 例如,如果请求一个 .xyz 的未知文件,Nginx 会返回 Content-Type: application/octet-stream

 

 实际效果示例

 请求 example.com/index.html

 Nginx 从 mime.types 中匹配到 .htmltext/html

 响应头:Content-Type: text/html → 浏览器渲染为网页。

 请求 example.com/file.unknown

 无匹配类型 → 使用 default_type

 响应头:Content-Type: application/octet-stream → 浏览器下载文件。

 

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

‘ $status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

变量说明

变量名

含义

$remote_addr

客户端 IP 地址(直连请求的 IP,如果是代理则为代理的 IP)。

$remote_user

认证用户名(如 Basic Auth),未认证时为 -

$time_local

请求时间,格式为 [日/月/年:时:分:秒 时区]

$request

请求行(包括方法、路径、协议),如 "GET /index.html HTTP/1.1"

$status

HTTP 响应状态码(如 200404502)。

$body_bytes_sent

发送给客户端的响应体字节数(不含响应头)。

$http_referer

请求来源页面的 URL(即浏览器从哪个页面跳转过来)。

$http_user_agent

客户端浏览器或工具的标识(如 Mozilla/5.0curl/7.68.0)。

$http_x_forwarded_for

如果请求经过代理,此字段会记录原始客户端 IP(多个代理时用逗号分隔)。

关键用途

  1. 问题排查
  • 通过 $status 分析错误请求(如 4xx/5xx)。
  • 通过 $remote_addr 定位恶意 IP。
  • 通过 $request$time_local 追踪请求时间和具体操作。
  1. 流量分析
  • $body_bytes_sent 统计带宽消耗。
  • $http_referer 分析用户来源(如搜索引擎引流)。
  1. 安全审计
  • $http_user_agent 识别爬虫或攻击工具(如 niktosqlmap)。
  • $http_x_forwarded_for 获取真实用户 IP(尤其在 CDN/负载均衡后)。

 

 

 

### **1. `keepalive_timeout 65;`**

- **作用**:设置客户端与服务器保持长连接的超时时间。

- **参数值**:`65` 秒(默认通常为 `75` 秒)。

- **解释**:

  - 在 HTTP 请求完成后,连接会保持打开状态,等待后续请求(适用于多个请求复用同一连接)。

  - 超过 65 秒无新请求时,服务器主动关闭连接。

- **适用场景**:

  - 高并发场景减少 TCP 握手开销。

  - 静态资源服务器(如图片、CSS/JS)。

------

### **2. `server_name_hash_bucket_size 128;`**

- **作用**:设置服务器名称(`server_name`)哈希表的内存桶大小。

- **参数值**:`128` 字节(默认值通常为 32 或 64)。

- **解释**:

  - Nginx 使用哈希表快速匹配请求的 `Host` 头到对应的虚拟主机。

  - 如果域名较长或数量较多,需增大此值以避免哈希冲突。

- **何时调整**:

  - 报错 `could not build the server_names_hash` 时。

  - 虚拟主机配置了大量长域名(如 `very.long.custom.domain.example.com`)。

------

### **3. `client_max_body_size 20m;`**

- **作用**:限制客户端请求体的最大大小。

- **参数值**:`20m` 表示 20MB(默认 `1m`)。

- **解释**:

  - 超过此大小的请求会返回 `413 Request Entity Too Large` 错误。

  - 影响文件上传、POST/PUT 请求等。

- **常见场景**:

  - 文件上传功能(需根据业务需求调整)。

  - API 接收大型 JSON 数据。

------

### **4. `client_header_buffer_size 32k;`**

- **作用**:设置客户端请求头的缓冲区大小。

- **参数值**:`32k`(默认 `1k` 或 `8k`)。

- **解释**:

  - 用于存储单个请求的头部信息(如 `Cookie`、`User-Agent`)。

  - 若请求头超过此值,Nginx 会使用 `large_client_header_buffers` 分配更大空间。

- **何时调整**:

  - 请求头过大(如携带大量 Cookie 或自定义头字段)。

  - 报错 `request header too large`。

------

### **5. `large_client_header_buffers 4 32k;`**

- **作用**:设置大型请求头的缓冲区和数量。

- **参数值**:`4 32k` 表示 4 个缓冲区,每个 32KB(默认 `4 8k`)。

- **解释**:

  - 当请求头超过 `client_header_buffer_size` 时,Nginx 按此配置分配额外缓冲区。

  - 第一个数字是缓冲区数量,第二个是每个缓冲区大小。

- **关键点**:

  - 总可用空间 = 数量 × 单个大小(此处为 4×32KB=128KB)。

  - 超出总空间仍会返回 `414 Request-URI Too Large` 或 `400 Bad Request`。

配置实例与典型场景

    http {

        keepalive_timeout 65;               # 长连接超时

        server_names_hash_bucket_size 128;    # 支持长域名

        client_max_body_size 20m;            # 允许上传 20MB 文件

        client_header_buffer_size 32k;       # 常规请求头缓冲

        large_client_header_buffers 4 32k;   # 大型请求头缓冲

    }

access_log  logs/access.log  main; 配置nginx的访问日志,记录客户端请求的详细信息

1. gzip on;

  • 作用:启用 Gzip 压缩功能。
  • 默认值off(不启用)。
  • 说明:开启后,Nginx 会对符合条件的响应进行 Gzip 压缩。

2. gzip_min_length 1k;

  • 作用:设置启用压缩的最小文件大小。
  • 参数值1k(1KB)。
  • 说明
  • 只有响应体大小 ≥ 1KB 时才会压缩。
  • 避免对小文件(如几字节的响应)压缩,可能得不偿失(压缩后反而更大)。

3. gzip_buffers 4 16k;

  • 作用:设置压缩缓冲区的大小和数量。
  • 参数值4 16k(4 个缓冲区,每个 16KB)。
  • 说明
  • 缓冲区用于存储压缩前的数据片段。
  • 默认值通常是 32 4k16 8k,根据服务器内存调整。

4. gzip_http_version 1.1;

  • 作用:指定启用压缩的最低 HTTP 协议版本。
  • 参数值1.1(默认 1.1)。
  • 说明
  • HTTP/1.0 早期版本对 Gzip 支持不完善,通常无需压缩。
  • 现代浏览器均使用 HTTP/1.1 或 HTTP/2,无需修改此值。

5. gzip_comp_level 2;

  • 作用:设置压缩级别(1~9)。
  • 参数值2(默认 1,推荐 2-6)。
  • 说明
  • 级别越高,压缩比越大,但 CPU 消耗也越高。
  • 折中推荐:45(平衡压缩率和性能)。

6. gzip_types text/plain application/x-javascript text/css application/xml;

  • 作用:指定需要压缩的 MIME 类型。
  • 参数值:示例中的类型列表。
  • 常见需压缩的类型
    text/html, text/plain, text/css, text/javascript,
    application/json, application/xml, application/javascript,
    font/woff2, image/svg+xml
  • 说明
  • 默认仅压缩 text/html
  • 静态资源(如 CSS/JS/JSON)建议加入压缩列表。

7. gzip_vary on;

  • 作用:在响应头中添加 Vary: Accept-Encoding
  • 默认值off
  • 说明
  • 告知缓存服务器(如 CDN)根据 Accept-Encoding 头区分压缩/未压缩版本。
  • 避免缓存错误(如将压缩内容返回给不支持 Gzip 的客户端)。

完整配置示例

gzip on;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_http_version 1.1;

gzip_comp_level 5;

gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;

gzip_vary on;

 

error_page   500 502 503 504  /50x.html;

location = /50x.html {

    root   html;

}

#### **`error_page 500 502 503 504 /50x.html;`**

- **作用**:定义当出现 `500`(服务器内部错误)、`502`(网关错误)、`503`(服务不可用)、`504`(网关超时)错误时,Nginx 应返回的页面路径。

- **参数**:

  - `500 502 503 504`:HTTP 错误状态码。

  - `/50x.html`:自定义错误页面的 URI(相对路径)。

- **效果**:

  当触发上述错误时,Nginx 会向客户端返回 `http://域名/50x.html` 的内容。

#### **2. `location = /50x.html { ... }`**

- **作用**:精确匹配 `/50x.html` 请求,并指定该文件的存储位置。

- **关键点**:

  - `location =`:表示精确匹配(仅匹配 `/50x.html`,不匹配子路径)。

  - `root html;`:设置文件根目录为 Nginx 安装目录下的 `html` 文件夹(默认路径通常为 `/usr/share/nginx/html`)。

    - 因此,`/50x.html` 实际对应服务器上的文件路径为:`/usr/share/nginx/html/50x.html`。

13.检查nginx配置文件语法是否错误

[root@czkmaster1 ~]# cd /usr/local/nginx/sbin/

[root@czkmaster1 sbin]# ls

nginx

[root@czkmaster1 sbin]# ./nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

14.启动nginx

cd /usr/local/nginx/sbin/

[root@czkmaster1 sbin]# ls

nginx

[root@czkmaster1 sbin]# systemctl stop nginx

[root@czkmaster1 sbin]# ./nginx

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] still could not bind()

[root@czkmaster1 sbin]# killall -9 nginx ##这种情况是有服务在占用80端口 实际不一定是nginx

[root@czkmaster1 sbin]# ./nginx

15,nginx的管理与维护

Nginx的启动、关闭与重启

Nginx对进程的控制能力非常强大,可以通过信号指令控制进程。常用的信号有:

QUIT,表处理完当前请求后,关闭进程。

HUP,表示重新加载配置,也就是关闭原有的进程,并开启新的工作进程。此操作不会中断用户的访问请求,因此可以通过此信号平滑的重启Nginx。

USR1,用于Nginx的日志切换,也就是重新打开一个日志文件,例如每天要生成一个新的日志文件时,可以使用这个信号来控制。

USR2,用于平滑升级可执行程序。

WINCH ,从容关闭工作进程。

Nginx的启动非常简单,只需输入:

[root@centos ~]# /usr/local/nginx/sbin/nginx

如果要关闭Nginx进程,可以使用如下命令:

[root@centos ~]# kill -XXX pid

其中,XXX就是信号名,pid是Nginx的进程号

要不间断服务地重新启动Nginx,可以使用如下命令:

[root@centos ~]# kill -HUP  `cat /usr/local/nginx/logs/nginx.pid` && kill -HUP nginx父进程号

16.Nginx反向代理应

Nginx中location应用实例

location主要用于对URL进行匹配。 location支持正则表达式匹配,也支持条件判断匹配。

以下这段设置是通过location指令来对网页URL进行分析处理,所有扩展名以.gif、.jpg、.jpeg、.png、.bmp、.swf结尾的静态文件都交给nginx处理。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  {

                root    /data/wwwroot/www.ixdba.net;

               }

以下这段设置是将upload和html下的所有文件都交给nginx来处理,需要注意的是,upload和html目录是在/data/wwwroot/www.ixdba.net目录下的一个子目录。

location ~ ^/(upload|html)/  {

                root    /data/wwwroot/www.ixdba.net;

                                }

在下面这段设置中,location是对此虚拟主机下动态网页的过滤处理,也就是将所有以.jsp为后缀的文件都交给本机的8080端口处理。

location ~ .*.jsp$ {

index index.jsp;      

proxy_pass http://localhost:8080;


网站公告

今日签到

点亮在社区的每一天
去签到