centos中编译安装nginx并支持ssl

原创 2016年08月30日 16:52:09

安装编译环境和必要的库

[root@localhost ~]# yum -y install gcc gcc-c++ autoconf automake libtool make cmake
[root@localhost ~]# yum -y install zlib zlib-devel openssl openssl-devel pcre-devel

说明

zlib: 为nginx提供gzip模块,需要zlib库支持
openssl: 为nginx提供ssl功能
pcre: 为支持地址重写rewrite功能,有一些操作系统使用yum install pcre-devel安装,由于缺乏包,而安装失败,因此需要手动安装

手动安装pcre

[root@localhost ~]#wget https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.tar.gz
[root@localhost ~]#tar -zxvf pcre-8.39.tar.gz
[root@localhost ~]#cd pcre-8.39
[root@localhost ~]#./configure
[root@localhost ~]#make
[root@localhost ~]#make install

创建用来运行nginx的用户及组

[root@localhost ~]#groupadd nginx
[root@localhost ~]#useradd -M -s /sbin/nologin -g nginx nginx

说明

-g参数为nginx用户指定了一个组。
-M参数保证其不自动生成home目录。

编译安装Nginx

[root@localhost ~]#wget http://nginx.org/download/nginx-1.10.1.tar.gz
[root@localhost ~]#ls
[root@localhost ~]#tar -zxvf nginx-1.10.1.tar.gz 
[root@localhost ~]#cd nginx-1.10.1
[root@localhost ~]#ls
[root@localhost ~]#./configure --prefix=/usr/local/nginx --with-http_ssl_module --user=nginx --group=nginx --with-pcre 
[root@localhost ~]#make
[root@localhost ~]#make install

启动

[root@localhost ~]# /usr/local/nginx/sbin/nginx   启动
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop  停止
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload  重新载入
[root@localhost ~]# /usr/local/nginx/sbin/nginx -v  查看版本
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t  测试配置文件是否正常
[root@localhost ~]# pkill nginx  强制关闭

查看安装状态

[root@localhost ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.10.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --user=nginx --group=nginx --with-pcre

nginx配置文件

[root@localhost ~]# /usr/local/nginx/conf/nginx.conf

Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内,也就是说内层块会自动获取外层块的值作为缺省值。

Server
接收请求的服务器需要将不同的请求按规则转发到不同的后端服务器上,在 nginx 中我们可以通过构建虚拟主机(server)的概念来将这些不同的服务配置隔离。

server {
    listen       80;
    server_name  localhost;
    root   html;
    index  index.html index.htm;
}

说明

listen 指监听端口
server_name 用来指定IP或域名,多个域名对应统一规则可以空格分开
root 指令用于指定虚拟主机的网页跟目录,这个地方可以是相对地址也可以是绝对地址
index 用于设定访问的默认首页地址

通常情况下我们可以在 nginx.conf 中配置多个server,对不同的请求进行设置。例如配置两个server,servername分别是test1.euming.com 和 test2.euming.com ,就像这样:

server {
    listen       80;
    server_name  test1.euming.com;
    root   html;
    index  index.html index.htm;
}
server {
    listen       80;
    server_name  test2.euming.com;
    root   /data/www/html;
    index  index.html index.htm;
}

但是当 server 超过2个时,建议将不同对虚拟主机的配置放在另一个文件中,然后通过在主配置文件 nginx.conf 加上 include 指令包含进来。更便于管理。

include vhosts/*.conf;

就可以把vhosts的文件都包含进去啦。

Localtion

每个 url 请求都会对应的一个服务,nginx 进行处理转发或者是本地的一个文件路径,或者是其他服务器的一个服务路径。而这个路径的匹配是通过 location 来进行的。我们可以将 server 当做对应一个域名进行的配置,而 location 是在一个域名下对更精细的路径进行配置。

以上面的例子,可以将root和index指令放到一个location中,那么只有在匹配到这个location时才会访问root后的内容:

文/chrisxlq(简书作者)
原文链接:http://www.jianshu.com/p/d5114a2a2052
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

附录:nginx编译参数说明如下:

--prefix=<path> -- 安装路径,如果没有指定,默认为/usr/local/nginx。
--sbin-path=<path> -- nginx可执行命令的文件,如果没有指定,默认为<prefix>/sbin/nginx--conf-path=<path> -- 在没有使用-c参数指定的情况下nginx.conf的默认位置,如果没有指定,默认为<prefix>/conf/nginx.conf。
--pid-path=<path> -- nginx.pid的路径,如果没有在nginx.conf中通过“pid”指令指定,默认为<prefix>/logs/nginx.pid。
--lock-path=<path> -- nginx.lock文件路径,如果没有指定,默认为<prefix>/logs/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 -- 如果在configure的时候没有发现kqueue, epoll, rtsig或/dev/poll其中之一,select模块始终为启用状态。
--with-poll_module --without-poll_module -- 如果在configure的时候没有发现kqueue, epoll, rtsig或/dev/poll其中之一,poll模块始终为启用状态。
--with-http_ssl_module -- 启用ngx_http_ssl_module,启用SSL支持并且能够处理HTTPS请求。需要OpenSSL,在Debian系统中,对应的包为libssl-dev。
--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-client-body-temp-path=PATH -- 为http连接的请求实体临时文件设置路径,如果没有指定,默认为<prefix>/client_body_temp
--http-proxy-temp-path=PATH -- 为http代理临时文件设置路径,如果没有指定,默认为<prefix>/proxy_temp
--http-fastcgi-temp-path=PATH - 为http fastcgi临时文件设置路径,如果没有指定,默认为<prefix>/fastcgi_temp
--without-http -- 禁用HTTP服务
--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 -- 变量CFLAGS中附加的参数,用于FreeBSD中的PCRE库,同样需要指定--with-cc-opt=”-I /usr/local/include”,如果我们使用select()函数则需要同时增加文件描述符数量,可以通过--with-cc-opt=”-D FD_SETSIZE=2048”指定。
--with-ld-opt=OPTIONS -- 通过连接器的附加参数,用于FreeBSD中的PCRE库,同样需要指定--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 -- 在编译时为PCRE设置附加参数。
--with-md5=DIR -- 设置md5库源文件路径。
--with-md5-opt=OPTIONS -- 在编译时为md5设置附加参数。
--with-md5-asm -- 使用md5汇编源。
--with-sha1=DIR -- 设置sha1库源文件路径。
--with-sha1-opt=OPTIONS -- 在编译时为sha1设置附加参数。
--with-sha1-asm -- 使用sha1汇编源。
--with-zlib=DIR -- 设置zlib库源文件路径。
--with-zlib-opt=OPTIONS -- 在编译时为zlib设置附加参数。
--with-zlib-asm=CPU -- 为指定的CPU使用zlib汇编源进行优化,可用值为: pentium, pentiumpro。
--with-openssl=DIR -- 设置openssl库源文件路径。
--with-openssl-opt=OPTIONS -- 在编译时为openssl设置附加参数。
--with-debug -- 启用debug记录。
--add-module=PATH -- 增加一个在PATH中的第三方模块。
版权声明:本文为博主原创文章,未经博主允许不得转载。

Centos6.5,安装nginx,包含ssl模块,如果已经安装nginx则配置即可

使用https来访问,一般都需要用域名来访问(IP貌似也可以,我没有深入研究),既然是域名,我比较常用的是实用nginx来做代理,一般来说安装起来应该很简单,但是还是遇到了一些有些非正常的、让人觉得很...

Linux CentOS7配置Nginx支持HTTPS访问

1.安装git和bc yum -y install git bc 2.安装Nginx (1)准备: yum install -y gcc-c++ pcre pcre-devel zlib zl...
  • hj7jay
  • hj7jay
  • 2016年12月08日 09:53
  • 3782

centos7编译安装nginx及无缝升级https

centos7编译安装nginx,升级到https。

#编译安装了的nginx 添加http_ssl_module模块

如何在编译安装成功的nginx 添加http_ssl_module模块 1.首先看下内核和系统的版本号。 [root@zabbix ~]# uname -a Linux zabbix....

在已经安装的nginx上,增加ssl模块

1. /usr/local/nginx/sbin/nginx -V 查看nginx版本与编译安装了哪些模块 nginx version: nginx/1.10.3 built by gcc 4.4.7...
  • cin_ie
  • cin_ie
  • 2017年06月02日 12:47
  • 1823

nginx增加ssl支持 - 编译时参数详情列表

./configure \     --with-http_ssl_module \      make && make install

Nginx安装以及使用,加载Https模块,以及gzip模块

nginx是安装在Linux下面的; 安装nginx参考了一下下面这个文档 http://www.cnblogs.com/Netsharp/p/5890170.html 如果需要加载https模块,...

nginx配置中proxy_redirect的作用(转)

来自http://wntest.ustc.edu.cn/mine/wordpress/?p=400 及 http://hi.baidu.com/171892549/blog/item/0ec6aaef...

Centos6.5,安装nginx,包含ssl模块,如果已经安装nginx则配置即可

使用https来访问,一般都需要用域名来访问(IP貌似也可以,我没有深入研究),既然是域名,我比较常用的是实用nginx来做代理,一般来说安装起来应该很简单,但是还是遇到了一些有些非正常的、让人觉得很...

CentOS 下对 Nginx + Tomcat 组合的申请 SSL 证书的安装

《CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证》介绍的是自己给自己颁发服务器端证书、然后再给客户端颁发证书的情况。如果你已经像你的客户一样厌倦了访问你...
  • defonds
  • defonds
  • 2015年05月20日 11:46
  • 2899
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:centos中编译安装nginx并支持ssl
举报原因:
原因补充:

(最多只允许输入30个字)