Nginx是一个 Web服务器,也可以用作反向代理,负载平衡器和HTTP缓存。该软件由 Igor Sysoev 创建,并于2004年首次公开发布。
Nginx 是免费的开源软件,根据类似 BSD许可证的条款发布。大部分 Web服务器通常使用Nginx作为负载均衡器。
整体采用模块化设计是Nginx的一个重大特点,甚至http服务器核心功能也是一个模块。旧版本的Nginx的模块是静态的,添加和删除模块都要对Nginx进行重新编译,1.9.11以及更新的版本已经支持动态模块加载。
Nginx安装方式有2种:安装包安装和源码编译安装。
Linux下采用安装包的方式安装Nginx可以参考其官方文档 http://nginx.org/en/linux_packages.html 。
源码编译安装可以更灵活的配置Nginx并且安装第三方的插件,因此本文只介绍源码编译安装这种方式,其官方文档 https://www.nginx.com/resources/admin-guide/installing-nginx-open-source/ 。
RHEL/CentOS 6 或以下版本操作系统下Nginx的编译安装请参考《RHEL/CentOS服务器上源码编译安装nginx》。
安装过程我们会隐藏并替换Nginx的名称,我们暂且用“httpdserver”这个名字来替换“nginx”。
yum -y install gcc gcc-c++
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
yum -y install unzip zip
以上安装的是一些主要的依赖包,具体可根据自己情况或者报错信息提示安装或修改。
下载substitutions
wget -c https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.zip -O ngx_http_substitutions_filter_module-master.zip
unzip ngx_http_substitutions_filter_module-master.zip
substitutions主要用于nginx反向代理时内容替换。
其他第三方模块请参考 https://www.nginx.com/resources/wiki/modules/ 。
sudo groupadd -r httpdserver
sudo useradd -s /sbin/nologin -g httpdserver -r httpdserver
新建的用户组和用户主要是在编译配置的时候指定nginx运行的用户和用户组。
wget -c http://nginx.org/download/nginx-1.12.2.tar.gz
tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
Nginx当前最新版为1.12.2。
(1) 编辑修改nginx.h源代码
vi src/core/nginx.h
将其中的“nginx”改为“
httpdserver”
#define NGINX_VERSION "1.12.2"
#define NGINX_VER "httpdserver/" NGINX_VERSION
(2)编辑修改ngx_http_header_filter_module.c源代码
vi src/http/ngx_http_header_filter_module.c
将其中的“nginx”改为“
httpdserver”
static u_char ngx_http_server_string[] = "Server: httpdserver" CRLF;
其作用是修改http的ResponseHeader信息。
vi src/http/ngx_http_special_response.c
将其中的“nginx”改为“
httpdserver”
static u_char ngx_http_error_tail[] =
"
httpdserver " CRLF
"
" CRLF "