Nginx已经编译安装并运行了一段时间, 然后某一天, 发现需要用到某个模块但当初没有编译, 这个时候怎么办呢?
卸载重新安装肯定可以的, 如果Nginx版本没有变更的话, 则有一个相对平滑的方法来添加模块,下面以添加stream模块举例说明:
1, 查看当前已编译的模块, 发现configure没有stream
/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.10.1
......
configure arguments: --with-http_ssl_module --with-http_stub_status_module
2, 找到当初编译安装时的目录, 如果找不到就重新下载相同版本的Nginx源码包
cd nginx-1.10.1
3, 重新configure, 记得新增stream模块时,别忘了之前已有的模块
./configure --with-http_ssl_module --with-http_stub_status_module --with-stream
4, 然后执行make, 但千万不要执行make install
make
5, 备份之前老得Nginx启动文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-without-stream
6, 如果Nginx正在运行, 先停掉
/usr/local/nginx/sbin/nginx -s stop
7, 用最新编译的Nginx启动文件替换当前的
cp objs/nginx /usr/local/nginx/sbin/nginx
//是否确认请输入 y
8, 再次查看已编译的模块, 发现有stream
/usr/local/nginx/sbin/nginx -V
......
configure arguments: --with-http_ssl_module --with-http_stub_status_module --with-stream
9, 测试stream模块是否支持
在nginx.conf下添加一个tcp监听, 如下是一个内网转外网的邮件代理配置.
stream {
upstream mail_server {
server smtp.163.com:25;
}
server {
listen 25;
proxy_pass mail_server;
}
}