linux下nginx安装,启动,停止,卸载,平滑升级,添加模块

nginx安装

可以用root安装,也可以用其他用户sudo安装,还是用root安装简单

需要先装gcc,我的已经安了,

[oracle@dev Server]$ rpm -q gcc
gcc-4.1.2-51.el5

pcre也安了,不是最新的

[oracle@dev sbin]$ rpm -q pcre
pcre-6.6-6.el5_6.1

安装pcre (让nginx支持rewrite)

下载最新PCRE(Perl Compatible Regular Expressions)源码包

http://www.pcre.org/

使用下面命令下载编译和安装 PCRE 包:
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz 下载
# tar zxvf pcre-8.21.tar.gz
# cd pcre-8.21

# ./configure
# make
# make install

安装nginx

下载地址

http://nginx.org/en/download.html

[oracle@dev opt]tar zxvf nginx-1.2.9.tar.gz

[oracle@dev opt] cd nginx-1.2.9

[oracle@dev nginx-1.2.9]$ ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

(可能用到的,就先安上吧,省着以后添加模块不方便)

[oracle@dev nginx-1.2.9]$ make install

--prefix可指定安装目录,默认的安装目录是/usr/local/nginx

如果报错的解决办法:

[root@bogon nginx-1.18.0]# make install
make: *** 没有规则可以创建目标“install”。 停止。
[root@bogon nginx-1.18.0]# make
make: *** 没有规则可以创建“default”需要的目标“build”。 停止。

安装Nginx报错:make: *** 没有规则可以创建“default”需要的目标“build”。 停止。
https://blog.youkuaiyun.com/qq_44895681/article/details/104757887

yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel

删除nginx目录,重新来一遍。

查看安装配置

[root@localhost conf]# nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

启动nginx

oracle@dev nginx-1.3.12]$ cd /opt/nginx/sbin
[oracle@dev sbin]$ ./nginx &
[2] 16121

要是出现如下信息说明端口被占用了,我的是被weblogic占用了,可先停止webloigc,或修改weblogic端口
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

访问地址

http://localhost/

停止nginx

[oracle@dev sbin]$ ./nginx -s stop

[oracle@dev sbin]$ ./nginx -s quit

Nginx -s stop         快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。(quick exit)
Nginx -s quit         平稳关闭Nginx,保存相关信息,有安排的结束web服务。(graceful exit)
Nginx -s reload       因改变了Nginx相关配置,需要重新加载配置而重载。(changing configuration,start a new worker,quitting an old worker gracefully.)
Nginx -s reopen       重新打开日志文件。(reopenging log files)

CentOS7 配置nginx 自启动

以下是./configure的选项

--prefix=<path> - Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。

--sbin-path=<path> - Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为<prefix>/sbin/nginx。

--conf-path=<path> - 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为<prefix>/conf/nginx.conf。

--pid-path=<path> - 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为 <prefix>/logs/nginx.pid。

--lock-path=<path> - nginx.lock文件的路径。

--error-log-path=<path> - 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为 <prefix>/logs/error.log。

--http-log-path=<path> - 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为 <prefix>/logs/access.log。

--user=<user> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。

--group=<group> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。

--builddir=DIR - 指定编译的目录

--with-rtsig_module - 启用 rtsig 模块

--with-select_module --without-select_module - Whether or not to enable the select module. This module is enabled by default if a more suitable method such as kqueue, epoll, rtsig or /dev/poll is not discovered by configure.

//允许或不允许开启SELECT模式,如果 configure 没有找到更合适的模式,比如:kqueue(sun os),epoll (linux kenel 2.6+), rtsig(实时信号)或者/dev/poll(一种类似select的模式,底层实现与SELECT基本相 同,都是采用轮训方法) SELECT模式将是默认安装模式

--with-poll_module --without-poll_module - Whether or not to enable the poll module. This module is enabled by default if a more suitable method such as kqueue, epoll, rtsig or /dev/poll is not discovered by configure.

--with-http_ssl_module - Enable ngx_http_ssl_module. Enables SSL support and the ability to handle HTTPS requests. Requires OpenSSL. On Debian, this is libssl-dev.

//开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在DEBIAN上是libssl

--with-http_realip_module - 启用 ngx_http_realip_module

--with-http_addition_module - 启用 ngx_http_addition_module

--with-http_sub_module - 启用 ngx_http_sub_module

--with-http_dav_module - 启用 ngx_http_dav_module

--with-http_flv_module - 启用 ngx_http_flv_module

--with-http_stub_status_module - 启用 "server status" 页

--without-http_charset_module - 禁用 ngx_http_charset_module

--without-http_gzip_module - 禁用 ngx_http_gzip_module. 如果启用,需要 zlib 。

--without-http_ssi_module - 禁用 ngx_http_ssi_module

--without-http_userid_module - 禁用 ngx_http_userid_module

--without-http_access_module - 禁用 ngx_http_access_module

--without-http_auth_basic_module - 禁用 ngx_http_auth_basic_module

--without-http_autoindex_module - 禁用 ngx_http_autoindex_module

--without-http_geo_module - 禁用 ngx_http_geo_module

--without-http_map_module - 禁用 ngx_http_map_module

--without-http_referer_module - 禁用 ngx_http_referer_module

--without-http_rewrite_module - 禁用 ngx_http_rewrite_module. 如果启用需要 PCRE 。

--without-http_proxy_module - 禁用 ngx_http_proxy_module

--without-http_fastcgi_module - 禁用 ngx_http_fastcgi_module

--without-http_memcached_module - 禁用 ngx_http_memcached_module

--without-http_limit_zone_module - 禁用 ngx_http_limit_zone_module

--without-http_empty_gif_module - 禁用 ngx_http_empty_gif_module

--without-http_browser_module - 禁用 ngx_http_browser_module

--without-http_upstream_ip_hash_module - 禁用 ngx_http_upstream_ip_hash_module

--with-http_perl_module - 启用 ngx_http_perl_module

--with-perl_modules_path=PATH - 指定 perl 模块的路径

--with-perl=PATH - 指定 perl 执行文件的路径

--http-log-path=PATH - Set path to the http access log

--http-client-body-temp-path=PATH - Set path to the http client request body temporary files

--http-proxy-temp-path=PATH - Set path to the http proxy temporary files

--http-fastcgi-temp-path=PATH - Set path to the http fastcgi temporary files

--without-http - 禁用 HTTP server

--with-mail - 启用 IMAP4/POP3/SMTP 代理模块

--with-mail_ssl_module - 启用 ngx_mail_ssl_module

--with-cc=PATH - 指定 C 编译器的路径

--with-cpp=PATH - 指定 C 预处理器的路径

--with-cc-opt=OPTIONS - Additional parameters which will be added to the variable CFLAGS. With the use of the system library PCRE in FreeBSD, it is necessary to indicate --with-cc-opt="-I /usr/local/include". If we are using select() and it is necessary to increase the number of file descriptors, then this also can be assigned here: --with-cc-opt="-D FD_SETSIZE=2048".

--with-ld-opt=OPTIONS - Additional parameters passed to the linker. With the use of the system library PCRE in FreeBSD, it is necessary to indicate --with-ld-opt="-L /usr/local/lib".

--with-cpu-opt=CPU - 为特定的 CPU 编译,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64

--without-pcre - 禁止 PCRE 库的使用。同时也会禁止 HTTP rewrite 模块。在 "location" 配置指令中的正则表达式也需要 PCRE 。

--with-pcre=DIR - 指定 PCRE 库的源代码的路径。

--with-pcre-opt=OPTIONS - Set additional options for PCRE building.

--with-md5=DIR - Set path to md5 library sources.

--with-md5-opt=OPTIONS - Set additional options for md5 building.

--with-md5-asm - Use md5 assembler sources.

--with-sha1=DIR - Set path to sha1 library sources.

--with-sha1-opt=OPTIONS - Set additional options for sha1 building.

--with-sha1-asm - Use sha1 assembler sources.

--with-zlib=DIR - Set path to zlib library sources.

--with-zlib-opt=OPTIONS - Set additional options for zlib building.

--with-zlib-asm=CPU - Use zlib assembler sources optimized for specified CPU, valid values are: pentium, pentiumpro

--with-openssl=DIR - Set path to OpenSSL library sources

--with-openssl-opt=OPTIONS - Set additional options for OpenSSL building

--with-debug - 启用调试日志

--add-module=PATH - Add in a third-party module found in directory PATH

卸载:

删除nginx目录即可

rm -rf /opt/nginx

(rm -rf /usr/local/nginx)

如果配置了自启动,也需要删除

官方文档:

http://nginx.org/en/docs/

nginx配置

https://blog.youkuaiyun.com/haveqing/article/details/84488957

Nginx配置SSI

https://blog.youkuaiyun.com/haveqing/article/details/84690768

让Nginx的SSI支持相对路径

https://blog.youkuaiyun.com/haveqing/article/details/84690769

安装上传模块下载安装

https://blog.youkuaiyun.com/haveqing/article/details/84488587

nginx平滑升级添加模块

https://blog.youkuaiyun.com/haveqing/article/details/84856279

配置 Nginx 反向代理 WebSocket
https://www.cnblogs.com/sanduzxcvbnm/p/11996951.html
Nginx使用自签证书
https://blog.youkuaiyun.com/lwy572039941/article/details/90747434

参考了:

http://www.cnblogs.com/xd502djj/archive/2011/11/23/2260239.html

http://wiki.nginx.org/ChsInstall

http://wwwzhouhui.iteye.com/blog/1305512

http://www.2cto.com/os/201206/136381.html

http://www.myhack58.com/Article/48/66/2010/28645.htm

  

<think>好的,我需要帮助用户了解如何在编译Nginx添加第三方模块。首先,我需要回忆一下之前用户提供的引用内容,特别是引用[1]和引用[2],里面提到了静态和动态添加模块的方法。 用户的问题是关于添加第三方模块的教程,所以应该分步骤说明。可能包括准备模块、配置编译参数、编译安装等步骤。同时,用户提到的是编译安装,可能需要区分静态和动态模块的区别,这引用[2]里详细解释了两种参数的不同。 首先,应该检查用户的Nginx版本,确保源码可用。然后下载第三方模块,比如ngx-fancyindex和echo模块。接着,在配置时使用--add-module或--add-dynamic-module参数。如果是静态编译,模块会被集成到二进制文件中;动态的话生成.so文件,需要配置载。 需要注意的是,如果用户已经安装Nginx,可能需要平滑升级,避免服务中断。这里引用[1]中的例子用了make upgrade,这应该是在重编译后覆盖安装,同时保持服务运行。 另外,用户可能关心的是如何验证模块是否添加成功,比如用nginx -V查看编译参数,或者在配置中使用模块的功能测试。 还有,用户可能遇到的常见问题,比如模块Nginx版本的兼容性,或者依赖库缺失。例如,某些模块可能需要额外的依赖,如PCRE、OpenSSL等,这时候编译前需要安装这些开发包,如引用[3]中提到的用apk安装依赖。 最后,要提醒用户备份配置,避免升级过程中出现意外。可能还需要比较静态和动态模块的优缺点,帮助用户选择合适的方式。比如动态模块灵活性高,但可能有载顺序的问题,静态模块性能可能更好但需要重编译。 总结步骤应该是:准备环境、下载模块和源码、配置参数、编译安装、验证。同时给出示例命令,让用户能跟着操作。可能还需要注意事项,比如权限问题,是否需要停止Nginx服务等。</think>以下是Nginx编译安装第三方模块的完整教程,分为静态模块和动态模块两种方式: ### 一、基础编译流程 1. **准备环境** ```bash # 安装编译依赖 yum install -y gcc make openssl-devel pcre-devel zlib-devel # 或Alpine系统 apk add --no-cache gcc libc-dev make openssl-dev pcre-dev zlib-dev linux-headers ``` 2. **获取资源** ```bash cd /opt wget https://nginx.org/download/nginx-1.24.0.tar.gz tar zxvf nginx-1.24.0.tar.gz unzip ngx-fancyindex-v0.5.2.zip # 示例模块 ``` 3. **配置编译参数** ```bash cd nginx-1.24.0 ./configure \ --prefix=/usr/local/nginx \ --add-module=../ngx-fancyindex-v0.5.2 # 静态模块编译方式 # 或使用动态模块 # --add-dynamic-module=../ngx-fancyindex-v0.5.2 ``` 4. **编译安装** ```bash make make install # 全安装 # 已安装升级方式 make upgrade # 平滑升级[^1] ``` ### 二、动态模块特殊处理 1. **载动态模块** ```nginx # nginx.conf中添加 load_module modules/ngx_http_fancyindex_module.so; ``` 2. **验证模块** ```bash nginx -V 2>&1 | grep fancyindex # 查看编译参数 nginx -t # 测试配置文件 ``` ### 三、Docker环境编译(引用[3]) ```bash # 创建构建容器 docker run -it --name nginx-builder nginx:alpine sh # 容器内操作 apk add build-base wget https://nginx.org/download/nginx-1.24.0.tar.gz tar zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0 ./configure --add-module=../third-party-module make && make install # 提取可执行文件 docker cp nginx-builder:/usr/sbin/nginx ./custom-nginx ``` ### 四、模块类型对比 | 特性 | 静态模块(`--add-module`) | 动态模块(`--add-dynamic-module`) | |--------------------|-------------------------------|----------------------------------| | 二进制文件大小 | 增大 | 独立.so文件 | | 载方式 | 自动集成 | 需load_module指令[^2] | | 热更能力 | 需重编译 | 支持动态载/卸载 | | 性能影响 | 略优 | 微小损耗 | ### 五、注意事项 1. **版本兼容性**:第三方模块必须与Nginx主版本匹配 2. **依赖管理**:部分模块需要额外库文件(如GeoIP模块需libgeoip) 3. **生产建议**:推荐使用动态模块保持核心精简 4. **备份机制**:编译前备份`/usr/local/nginx/sbin/nginx`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值