获取nginx安装包
地址:https://nginx.org/en/download.html
Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
Stable version:最新稳定版,生产环境上建议使用的版本
Legacy versions:遗留的老版本的稳定版
我们下载linux上的安装包 tar.gz 结尾的,右键复制链接即可,linux上无需下载安装包再上传,直接使用wget命令获取解压即可
下载并解压
# 此处我们使用组合命令直接下载并解压(当然可以分两步,直接一条命令敲出来比较装13,23333) # -qO-:wget 参数,表示静默模式下载并将输出发送到标准输出(stdout) # tar -xz:tar 参数,-x 表示解压,-z 表示使用 gzip 解压,-C 表示指定解压的目标目录。 wget -qO- https://nginx.org/download/nginx-1.26.1.tar.gz | tar -xz -C /usr/local
安装nginx所必须软件
1 PERE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。
nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
注:pcre-devel是使用pcre开发的一个二次开发库。nginx****也需要此库。
2 zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
3 openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,
并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
编译nginx
配置makefile
进入nginx解压目录,/usr/local/nginx-1.26.1
,nginx目录根据下载版本不同而不同,使用nginx目录中的configure命令创建一个makefile文件,手动编译过gcc的同学可能比较熟悉这个,不熟悉也可以了解一下linux系统上手动编译都需要用到这个命令,执行如下命令开始设定nginx编译前的配置:
# 当前目录为:/usr/local/nginx-1.26.1 ./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-file-aio \ --with-http_realip_module \ --with-http_v2_module \ --with-pcre \ --with-stream \ --with-stream_ssl_module \ --with-mail \ --with-mail_ssl_module
上述配置的大致意义如下:
--prefix=/usr/local/nginx
:
- 设置 Nginx 的安装目录为
/usr/local/nginx
。
--pid-path=/var/run/nginx/nginx.pid
:
- 设置 PID 文件的路径为
/var/run/nginx/nginx.pid
,PID 文件用于存储 Nginx 进程的 ID。
--lock-path=/var/lock/nginx.lock
:
- 设置锁文件的路径为
/var/lock/nginx.lock
。
--error-log-path=/var/log/nginx/error.log
:
- 设置错误日志文件的路径为
/var/log/nginx/error.log
。
--http-log-path=/var/log/nginx/access.log
:
- 设置访问日志文件的路径为
/var/log/nginx/access.log
。
--with-http_gzip_static_module
:
- 启用 HTTP Gzip 静态模块,用于发送预先压缩的
.gz
文件。
--http-client-body-temp-path=/var/temp/nginx/client
:
- 设置 HTTP 客户端请求体临时文件的存储路径为
/var/temp/nginx/client
。
--http-proxy-temp-path=/var/temp/nginx/proxy
:
- 设置 HTTP 代理临时文件的存储路径为
/var/temp/nginx/proxy
。
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi
:
- 设置 FastCGI 临时文件的存储路径为
/var/temp/nginx/fastcgi
。
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi
:
- 设置 uWSGI 临时文件的存储路径为
/var/temp/nginx/uwsgi
。
--http-scgi-temp-path=/var/temp/nginx/scgi
:
- 设置 SCGI 临时文件的存储路径为
/var/temp/nginx/scgi
。
--with-http_stub_status_module
:
- 启用 HTTP stub status 模块,用于提供基本的状态信息。
--with-http_ssl_module
:
- 启用 HTTP SSL 模块,用于支持 HTTPS。
--with-file-aio
:
- 启用文件异步 I/O 支持。
--with-http_realip_module
:
- 启用 HTTP Real IP 模块,用于将客户端的 IP 地址更改为请求头中的值(如通过代理或负载均衡器)。
--with-http_v2_module
:
- 启用 HTTP/2 模块,用于支持 HTTP/2 协议。
--with-pcre
:
- 启用 PCRE(Perl 兼容正则表达式库)支持,用于支持正则表达式。
--with-stream
:
- 启用 Stream 模块,用于处理 TCP/UDP 流。
--with-stream_ssl_module
:
- 启用 Stream SSL 模块,用于为 Stream 提供 SSL/TLS 支持。
--with-mail
:
- 启用邮件代理模块,用于支持 SMTP、IMAP 和 POP3 协议。
--with-mail_ssl_module
:
- 启用邮件 SSL 模块,为邮件代理提供 SSL/TLS 支持。
当出现如下界面时即配置完成:
编译
检查是否成功在当前目录生成Makefile文件
创建nginx临时目录和nginx目录
# 当前目录为:/usr/local/nginx-1.26.1 # 此处创建的目录和上面配置的nginx临时目录一致 mkdir -p /var/temp/nginx
开始编译
# 当前目录为:/usr/local/nginx-1.26.1 # 提示make命令没有就直接使用yum命令安装 yum -y install make make
当出现如下图的内容时说明命令顺利执行啦,don't worry,这不是报错
继续执行下一步命令开始安装nginx,这里不需要再次执行安装路径,创建makefile文件的时候已经指定了。
# 当前目录为:/usr/local/nginx-1.26.1 make install
启动nginx
进入nginx安装目录 /usr/local/nginx
,执行sbin目录下的nginx启动脚本
# 当前目录为:/usr/local/nginx/sbin ./nginx # 检查nginx是否启动成功,已经出现nginx进程,nginx安装成功 ps -ewwf | grep nginx root 3444 1 0 13:33 ? 00:00:00 nginx: master process ./nginx nobody 3445 3444 0 13:33 ? 00:00:00 nginx: worker process root 3447 1 0 13:33 pts/0 00:00:00 grep --color=auto nginx # 关闭nginx # ./nginx -s stop 或 ./nginx -s quit # 刷新配置文件 # ./nginx -s reload
配置外部访问
配置防火墙策略,开放防火墙nginx端口
# 当前目录为 /usr/local/nginx/sbin # 注:如果提示没有iptables命令可以使用yum命令安装即可,其他版本系统也有对应的防火墙工具,自行百度开发端口即可,嫌麻烦可以直接把防火墙关闭(自己玩可以,生产环境务必不要这样玩) iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Dockerfile版本
FROM centos:latest RUN mkdir -p /etc/yum.repos.d/bak && \ mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak && \ curl -o /etc/yum.repos.d/CentOS-Base-Aliyun.repo http://mirrors.aliyun.com/repo/Centos-8.repo && \ yum clean all && yum makecache RUN sed -i "5i\alias ll=\'ls -l\'" /root/.bashrc && source /root/.bashrc RUN yum install -y ncurses wget && wget -qO- https://nginx.org/download/nginx-1.26.1.tar.gz | tar -xz -C /usr/local && \ yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel make && cd /usr/local/nginx-1.26.1 && \ ./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-file-aio \ --with-http_realip_module \ --with-http_v2_module \ --with-pcre \ --with-stream \ --with-stream_ssl_module \ --with-mail \ --with-mail_ssl_module && \ mkdir -p /var/temp/nginx && make && make install && ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx EXPOSE 80 CMD ["nginx","-g","daemon off;"]
构建Dockerfile镜像
# 进入Dockerfile文件所在目录 # 开始构建 -t之后指定的时镜像名和tag docker build -t image:test .
运行镜像
# 此处必须采用后台运行才可以启动nginx docker run -d -p 80:80 --name nginx-demo image:test
启动成功之后使用 docker ps
查看容器是否成功启动(避免使用-it启动容器直接退出而不知道)
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 66934d164c31 image:test "nginx -g 'daemon of…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx-demo
本地访问nginx主页,本机ip为 192.168.31.30,映射到主机的端口为80,所以我们在本地访问192.168.31.30:80(实际ip请根据docker容器所在宿主机的ip来访问)
访问成功!!撒花~!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)