Nginx 部署、配置及优化

本文详细介绍了Nginx服务器的安装、配置方法及优化技巧,包括高性能HTTP服务、反向代理、负载均衡、SSL/TLS加密、流媒体视频服务和HTTPS安全网站配置。深入探讨了Nginx的特性、应用场景、部署流程、配置文件解析及关键参数调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍: Nginx [engine x] 是一个高性能 HTTP 服务器和反向代理服务器,邮件代理服务器,并且还是一个通用的 TCP/UDP 代理服务器。最初由 Igor Sysoev 编写。据Netcraft称,截止到2019年4月份,Nginx 服务或代理了26.22%的网站。其中有一些比较知名的网站,如Netflix,Dropbox,WorkPress,FastMail.FM 等。

http://nginx.org/en/

后期在了解相关配置的过程中,参看了官方文档,发现很多简便的安装及配置的方法,在官方文档中都有说明,这为我们学习 Nginx 提供了第一手资料,想要详细了解相关信息。查看

https://docs.nginx.com/

0. 特性与应用场景

特性:

  1. 可针对静态资源高速高并发访问及缓存。
  2. 可使用反向代理加速,并且可进行数据缓存。
  3. 具有简单的负载均衡,节点健康检查,容错能力。
  4. 支持远程FastCGI服务的缓存加速。
  5. 支持FastCGI,Uwsgi,SCGI,Memcached Servers的加速和缓存。
  6. 支持SSL TSL SNI。
  7. 具有模块化架构,过滤器包括gzip压缩,ranges支持,chunked响应,XSLT、SSL及图像缩放功能等。

应用场景:

  1. Web服务器
  2. 反向代理、负载均衡服务器及邮件代理服务器
  3. 前端业务数据缓存服务器

1. 部署

1.1 安装准备

部署环境: CentOS 6.6

采用方式:编译安装

软件下载地址: http://nginx.org/en/download.html

1.2 安装步骤

安装相关依赖软件包:

# yum  install pcre pcre-devel openssl openssl-devel -y

创建安装目录及解压软件包:

# mkdir -p /application/nginx
# mkdir -p /tools
# cd /tools
# wget -q http://nginx.org/download/nginx-1.15.12.tar.gz
# tar xvf nginx-1.15.2.tar.gz

创建用户,配置安装参数:

# useradd nginx -s /sbin/nologin -M
# ./configure --user=nginx --group=nginx --prefix=/application/nginx --with-http_stub_status_modules --with-http_ssl_module 
# make && make install

官方给出的安装方法:

$ sudo yum install epel-release
$ sudo yum update
$ sudo yum install nginx

使用yum的安装方法:

$ sudo vi /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/mainline/<OS>/<OSRELEASE>/$basearch/
gpgcheck=0
enabled=1

说明:

  1. /mainline 表示最新的Nginx版本,删除它可以获取最新的稳定版本
  2. 指定 rhel 或者 centos
  3. 指定发行版本号,6, 6.x, 7, 7.x 或者其他

举例:

[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

$ sudo yum update
$ yum install nginx 
$ nginx  # 启动

配置信息检查提示:

# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx//conf/nginx.conf test is successful

安装完成,检查配置信息也没有问题。

启动(重启)nginx指令:

# /application/nginx/sbin/nginx  
# /application/nginx/sbin/nginx -s reload # 重新加载配置文件
# /application/nginx/sbin/nginx -s stop # 快速关闭 (fast shutdown)
# /application/nginx/sbin/nginx -s quit # 优雅的关闭 (graceful shutdown)
# /application/nginx/sbin/nginx -s reopen # 重新打开日志文件

验证服务器启动正常:

# curl localhost

或者使用浏览器查看。

2. 相关配置

2.1 各个目录及文件作用

  1. ./sbin 启动脚本所在位置
  2. ./logs 日志所在目录
  3. ./conf 配置文件所在位置
    1. ./conf/extra 拓展的配置文件所在的位置,会在./conf/nginx.conf 中引用
    2. ./conf/nginx.conf 主配置文件 ./conf/nginx.conf.default 默认主配置文件
  4. ./html 网站资源所在位置
  5. ./fastcgi_temp fastcgi 临时数据文件
  6. ./proxy_temp proxy 临时数据文件
  7. ./scgi_temp 临时数据文件
  8. ./uwsgi_temp 临时数据文件

2.2 配置文件中各参数说明

配置文件中,一般都是采用指令来指定配置参数,简单的指令可以是单行配置参数,一个指令集会使用大括号进行包围,形成一个配置的块。并且这些指令集的块也可以通过引用的方式来进行指定,指定的位置为配置文件所在的当前目录。一般采用

include extra/abc_test.conf

进行指定。

一些顶层的核心的配置配置内容:

  1. events 通用连接
  2. http HTTP配置区块
  3. mail MAIL配置区块
  4. stream TCP/UDP 配置区块

放在这些区块外的指令为主配置的内容。

2.3 配置web 服务

配置简单的 WEB 服务,主要是基于各种情况下的虚拟主机的配置,配置具有普遍性,可以在其他服务区块中配置不同的虚拟主机。

2.3.1 简单web服务示例

主配置信息如下:

work_processor 1;
error_log logs/error.log;
events {
	worker_connections  1024;
}

http {
	include       mime.types;
	default_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"';
	sendfile        on;
	server_tokens       off;
	keepalive_timeout  65;

	include extra/www.conf;
	include extra/bbs.conf;
	include extra/blog.conf;
}

在 http 区块中,定义了mime的类型,定义了日志的格式,定义了是否显示 Nginx 的版本信息,定义了保持连接的时间。定义了不同的虚机主机,这些虚机主机的配置文件都放在了./conf/extra/目录下,举例说明:

server{
	listen 80; # 使用基于端口和ip地址的虚拟主机修改此处配置
	server_name www.xiaokea.com; # 使用基于域名的虚拟主机修改此处配置
	location / {
	    root html/www;
	    index index.html index.htm;
	}
}

此处如果将端口省略的话,将会使用80端口,如果省略IP地址的话,服务器将会监听所有的IP地址。

2.3.2 location 指令相关说明

location指令的作用是根据用户的请求的URI来执行不同的应用,也就是根据用户请求的网址URL进行匹配,匹配成功执行相关的操作。

示例说明:

location =/ { # 当用户请求 “/” 时,匹配 configuration A
    configuration A
}

location / {  # 用户请求 /index.html 时,匹配 configuration B
    configuration B
}

location /some/path/ { # 用户请求 /some/path/index.html时,匹配configuration C
	configuration C 
}	

location ^~ /some/path/ { # 匹配常规字符串,不做正则匹配检查
	...
}

location ~* \.(gif|jpg|jpeg)$ {  # 正则匹配
	...
}

root 指令指定了静态文件在文件系统(服务器)中的位置,请求的URI将域名后的路径信息添加在这个路径后,来获得完整的静态文件所在的位置。

比如:我们想要请求的地址为 www.xiaokea.com/data/index.html, 这个URI会匹配的路径为:

location /data {
	root html/www/; # 这里 html 所在的路径为 Nginx 安装的根目录
	index index.html index.htm;
}

这里做一下通俗点的解释:建立了一个虚拟主机,虚拟主机指定的根目录为 html/www/,我们在请求URI 为 www.xiaokea.com/data/index.html 的信息时,首先去 www 这个虚拟主机的根目录下找域名后面的资源,服务器会去匹配 location ,然后根据资源给出响应。

2.3.3 配置流媒体视频服务

中心的网断掉了,打算搭建一个文件共享的服务,samba已经搭建成功,现在想搭建一个视频服务器,将大家认为不错的电影提供给大家看,于是萌生了搭建一个流媒体视频服务器的打算,晚上查找了相关资料,顺利搭建完成,虽然有待优化,不过现在看来已经可以观看视频,特在此进行总结。

下载 nginx-rtmp-module 模块,并指定配置参数,–add-module=/tools/nginx-rtmp-module-master,重新编译安装。

添加一个新的虚拟主机,并在主配置文件中添加rtmp的配置信息。

rtmp{
	server {
		# 监听端口
		listen 1935;
		chunk_size 4000;
		application myvideo{
		# 开启实时
		live on;
		hls on;
		# 推流请求路径,文件存放路径
		hls_path /application/nginx/video;
		hls_fragment 5s;
			}
		}	
	}
2.3.4 配置 HTTPS 安全网站服务

3. 功能优化

Nginx 在安装的过程中,会指定一些默认的参数,这些参数在生产过程中会严重影响系统的安全,另外,在测试环境中,也需要提供一些方便测试的接口。我们可以在安装完成后修改一些参数来保证系统的安全性,也就是对一些功能的优化,以下为实践过程中遇到的可以优化的选项。

3.1 状态信息的显示

状态信息的显示可以帮助我们测试系统的性能,还能帮助我们定位服务器问题所在,但是,这个状态信息最好只能被管理者看到。

# status
server {
    listen 8081;  # 查看状态信息的端口
    server_name localhost;
    location / {
            stub_status on;  # 打开可以查看状态信息指令
            access_log off;
            allow 192.168.2.0/24;  # 配置可以查看状态信息的地址段
            deny all;
    }
}

3.2 错误日志信息配置

错误日志是定位问题首先需要查看的信息,所以配置错误日志将会帮助我们快速定位问题。如下为错误日志的格式信息:

error_log			file			level;
关键字				日志文件			错误日志级别

# defualt: error_log logs/error.log error;

可以放置的区块及指令的位置有: main http server location。

这里说明一下错误日志的级别,有【debug|info|notice|warn|error|crit|alert|emerg】这些选项,级别越高,记录的信息越少,生产场景一般使用的warn|error|crit 三个级别,注意不要配置过低的级别等级,会带来巨大的磁盘IO。

3.3 隐藏 Nginx 软件版本信息

配置文件中添加:

http{
	...
	server_tokens	off;
	...
}

3.4 优化 Nginx 服务性能

配置 Nginx 的工作进程的个数:

worker_processes 4; # 这里指定的进程数要和CPU的总核数一致,这样可以保证高效运行。
worker_cpu_affinity 0001 0010 0100 1000; 配置Nginx 与cpu 的亲和力参数。

3.5 调整 Nginx 单个进程允许的客户端最大连接数

worker_connections	20480;

3.x 其他优化配置

  1. 默认的配置文件中,user 为 nobody。在这里为了安全起见,我们在安装前指定了配置文件的用户和组,在上文中,我们指定为nginx。如果上文中配置参数不指定相关的用户,默认为nobody。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值