目 录CONTENT

文章目录

Nginx安装

简中仙
2022-09-07 / 0 评论 / 0 点赞 / 69 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2023-10-07,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、Nginx介绍

Nginx是一个轻量级/高性能的反向代理Web服务器,由俄罗斯开发人员Igor Sysoev开发,是一个免费的开放源代码HTTP服务器,也可以用作反向代理,邮件代理和常规TCP / UDP代理服务器。它致力于以最少的资源有效地为大量并发用户提供服务。在无法处理大量Web流量时候,Nginx就起到了作用。

官方文档:http://nginx.org/en/docs/

二、Nginx的核心特点

1、跨平台:Nginx可以在大多数0s编译运行,而且也有Windows的版本

2、配置异常简单:非常容易上手。

3、非阻塞、高并发连接

4、事件驱动:通信机制采用epoll模型,支持更大的并发连接。通过异步非阻塞的事件处理机制,这种机制让你可以同时监控多个事件,Nginx实现由进程循环处理多个准备好的事件,从而实现高并发和轻量级。

5、MasterMorker结构:一个master进程生成一个或多个worker进程。

6、内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx进程才消耗150M内存(15M*10=150M)

7、内置的健康检查功能:如果Nginx代理的后端的某台Web服务器宕机了,不会影响前端访问。

8、节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。

9、稳定性高:用于反向代理,宕机的概率微乎其微。

三、编译安装

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

1、下载源码

# wget http://nginx.org/download/nginx-1.21.3.tar.gz
# tar zxf nginx-1.21.3.tar.gz
# cd nginx-1.21.3
# mkdir ~/.vim/
# cp -r contrib/vim/* ~/.vim/

2、安装依赖包

# yum -y install epel-release
# yum -y install gcc pcre-devel  zlib-devel openssl-devel libxml2-devel libxslt-devel gd-devel GeoIP-devel jemalloc-devel libatomic_ops-devel perl-devel  perl-ExtUtils-Embed libunwind-devel gperftools pcre openssl  libxml2 GeoIP GeoIP-data nscd lsof

DNS缓存

编辑/etc/resolv.conf配置DNS服务器,打开NSCD服务,缓存DNS,提高域名解析响应速度。

systemctl start nscd.service                    # 启动NSCD服务 
systemctl enable nscd.service

修改文件打开数限制

操作系统默认单进程最大打开文件数为1024,要想实现高并发,可以把单进程的文件打开数调整为65536。

echo "* soft nofile 65536
\* hard nofile 65536" >>/etc/security/limits.conf

*号表示所用用户

3、创建运行用户、组

# useradd -s /sbin/nologin nginx

4、编译安装

# cd /usr/local/src/nginx-1.20.2/
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --http-client-body-temp-path=/usr/local/nginx/tmp/client_body --http-proxy-temp-path=/usr/local/nginx/tmp/proxy --http-fastcgi-temp-path=/usr/local/nginx/tmp/fastcgi  --http-uwsgi-temp-path=/usr/local/nginx/tmp/uwsgi --http-scgi-temp-path=/usr/local/nginx/tmp/scgi --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module  --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module  --with-http_stub_status_module --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-compat --with-pcre-jit --with-http_perl_module=dynamic --with-pcre --with-debug  && make -j4 && make install -j4
模块说明
--user=nginx指明以那个身份运行worker进程,主控master进程一般由root运行
--group=nginx使用nginx用户组
--http-client-body-temp-path客户端body部分的临时文件存放路径
--http-proxy-temp-path作为代理服务器,服务器响应报文的临时文件存放路径
--http-fastcgi-temp-path作为fastcgi代理服务器,服务器响应报文的临时文件存放路径
--http-uwsgi-temp-path作为uwsgi代理服务器,服务器响应报文的临时文件存放路径
--http-scgi-temp-path作为scgi反代服务器,服务器响应报文的临时文件存放路径
--with-threads启用线程池功能
--with-file-aio启用AIO支持
--with-http_ssl_module编译SSL模块
--with-http_v2_module编译HTTP/2模块
--with-http_realip_module编译HTTP的真实IP模块
--with-http_addition_module编译响应内容追加模块
--with-http_xslt_module=dynamic动态编译XSLT样式表转化XML响应模块
--with-http_image_filter_module=dynamic动态编译图像转换模块
--with-http_geoip_module=dynamic动态编译客户端IP解析城市地址模块
--with-http_sub_module编译字符串替换模块
--with-http_dav_module编译WebDAV协议支持模块
--with-http_flv_module编译FLV文件伪流媒体服务器支持模块
--with-http_mp4_module编译MP4文件伪流媒体服务器支持模块
--with-http_gunzip_module编译gzip压缩兼容模块
--with-http_gzip_static_module编译发送gz预压缩文件数据模块
--with-http_auth_request_module编译请求认证模块
--with-http_random_index_module编译随机首页模块
--with-http_secure_link_module编译请求连接认证模块
--with-http_degradation_module编译内存不足响应模块
--with-http_slice_module编译文件切片模块
--with-http_stub_status_module编译运行状态模块
--with-stream=dynamic动态编译TCP/UDP代理模块
--with-stream_ssl_module编译TCP/UDP代理SSL支持模块
--with-stream_realip_module编译TCP/UDP代理真实IP模块
--with-stream_geoip_module=dynamic动态编译地域信息解析模块
--with-stream_ssl_preread_module编译TCP/UDP代理点SSL预处理模块
--with-compat启用file aio支持
--with-pcre-jitpcre JIT支持,可以提升处理正则表达式的速度
--with-http_perl_module=dynamic动态支持perl模块的使用
--with-pcre编译支持pcre
--with-debug进一步地了解页面访问出现问题的原因

5、添加nginx可执行文件

# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

安装成系统服务

# cat >/usr/lib/systemd/system/nginx.service <<EOF
[Unit]                                                				# 记录service文件的通用信息
Description=The Nginx HTTP and reverse proxy server   				# Nginx服务描述信息
After=network.target remote-fs.target nss-lookup.target  			# Nginx服务启动依赖,在指定服务之后启动
   
[Service]                                         					# 记录service文件的service信息
Type=forking                                     					# 标准UNIX Daemon使用的启动方式 
PIDFile=/run/nginx.pid                            					# Nginx服务的pid文件位置 
ExecStartPre=/usr/bin/rm -f /run/nginx.pid       					# Nginx服务启动前删除旧的pid文件 
ExecStartPre=/usr/local/nginx/sbin/nginx -t -q    					# Nginx服务启动前执行配置文件检测 
ExecStart=/usr/local/nginx/sbin/nginx -g "pid /run/nginx.pid;"  	# 启动Nginx服务 
ExecReload=/usr/local/nginx/sbin/nginx -t -q      					# Nginx服务重启前执行配置文件检测 
ExecReload=/usr/local/nginx/sbin/nginx -s reload -g "pid /run/nginx.pid;"   # 重启Nginx服务 
ExecStop=/bin/kill -s HUP $MAINPID                					# 关闭Nginx服务 
KillSignal=SIGQUIT 
TimeoutStopSec=5 
KillMode=process 
PrivateTmp=true 
 
[Install]                                         # 记录service文件的安装信息 
WantedBy=multi-user.target                        # 多用户环境下启用 
EOF

重新加载系统服务并启动

# systemctl daemon-reload
# systemctl start nginx.service						# 启动Nginx服务命令
# systemctl enable nginx.service				    # 将Nginx服务注册为系统启动后自动启动
# systemctl reload nginx                            # reload Nginx服务命令 
# systemctl stop nginx                              # stop Nginx服务命令 
# systemctl status nginx                            # 查看Nginx服务运行状态命令

四、包管理安装

yum安装

# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
# yum -y install nginx
# systemctl start nginx
# systemctl enable nginx
# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      46650/nginx: master 

五、使用Docker

# docker run --name nginx -p 80:80 -d nginx:latest

六、Nginx版本

版本链接
Nginx开源版http://nginx.org/
Nginx plus 商业版https://www.nginx.com
Openrestyhttp://openresty.org
Tenginehttp://tengine.taobao.org/
0

评论区