nginx是一款高性能的web服务和代理服务,其高并发性能和开源决定了人们使用的高增长率。我们都知道apache是第一web服务,全球90以上的web服务是通过apache来服务的,nginx是后起之秀,俱来后来者居上的趋势。nginx天生就是为分布式集群而生,而apache是最早设计为单机服务,nginx提供采用的是异步事件处理机制,因此轻松的能够搭建并发10w以上单机服务。
我们可以从官网下载nginx 现在最新的闻稳定版本是1.8.1我们就拿他来做示例,下载地址:http://nginx.org/download/nginx-1.8.1.tar.gz,服务环境是linux。
在命令行输入:
wget http://nginx.org/download/nginx-1.8.1.tar.gz
,等在下载完毕后,我们在看下nginx基础模块需要依赖的库:
gcc:编译nginx源码
gzip:开启资源压缩功能依赖此模块
openssl:增加https协议功能
pcre:在配置中使用提供正则表达式
openssl安装先下载新版本的, https://www.openssl.org/source/openssl-1.1.0c.tar.gz
解压缩文件:
tar -zxvf openssl-1.0.1u.tar.gz cd openssl-1.0.1u ./config --prefix=/usr/local/openssl ./config –t make && make install
安装openssl后配置profile文件
vi /ect/profile
在最后两行增加:
export OPENSSL=/usr/local/openssl/bin export PATH=$OPENSSL:$PATH:$HOME/bin
然后再重新加载文件:
source /etc/profile
在编译nginx前,先安装以上依赖的模块,先解压nginx文件,在控制台输入:tar –zxvf nginx-1.8.1.tar.gz
nginx默认的安装路径是:/usr/local/nginx,我们将采用的路径是默认的路径,需要https的服务,因此我们的nginx的配置是:./configure --with-http_ssl_module 依赖的其他模块我们都是默认安装的nginx能够自动找到。
在控制台执行:
cd nginx-1.8.1 ./configure --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --user=nginx --group=nginx --with-openssl=/usr/local/openssl-1.0.1u
这里需要注意,openssl路径是源码的路径
配置完毕后开始编译nginx;
在控制台输入:
make && make install
安装完成,输入ip地址试一试出现nginx页面
nginx编译参数详解
• --prefix=PATH : 指定nginx的安装目录。默认 /usr/local/nginx
• --conf-path=PATH : 设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf
• --user=name: 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody。--group=name类似
• --with-pcre : 设置PCRE库的源码路径,如果已通过yum方式安装,使用--with-pcre自动找到库文件。使用--with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(版本4.4 – 8.30)并解压,剩下的就交给Nginx的./configure和make来完成。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。
• --with-zlib=PATH : 指定 zlib(版本1.1.3 – 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib 。
• --with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
• --with-http_stub_status_module : 用来监控 Nginx 的当前状态
• --with-http_realip_module : 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址
• --add-module=PATH : 添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)