在ubuntu系统下,使用apt-get命令直接安装nginx的话,默认不会安装ipv6模块。想要nginx支持ipv6,就需要自行下载源码编译安装。另外,为了能以安全的https连接访问网站,本文还将配置ssl证书。文章分为两部分,分别是nginx的编译安装和nginx的配置过程。

目录

1 安装依赖库

2 下载代码并解压

3 安装配置

4 编译安装

5 验证

6 配置ipv6以及ssl

6.1 配置ipv6

6.2 配置ssl[3]

参考


1 安装依赖库

nginx的运行需要以下组件,如果不安装会导致后续步骤失败[1]。

#安装openssl库
sudo apt-get install openssl libssl-dev

#安装pcre
sudo apt-get install libpcre3 libpcre3-dev

#安装zlib
sudo apt-get install zlib1g-dev

一些机器本身不带gcc和g++,需要我们自己安装编译环境。在ubuntu中可以直接安装build-essential软件包,其中包含了编译c/c++的软件;其它系统请自行搜索解决。

sudo apt-get install build-essential

2 下载代码并解压

前往官网获取nginx下载链接,本文以 nginx-1.21.6 为例。

cd ~

#下载
wget http://nginx.org/download/nginx-1.21.6.tar.gz

#解压
tar -zxvf nginx-1.21.6.tar.gz

#进入目录
cd nginx-1.21.6

3 安装配置

配置时需要通过 --prefix 指定安装路径,这里需要ipv6模块,所以还需要加入--with-ipv6命令。关于nginx的配置命令,这篇博客[2]讲得非常详细。以下是我的配置代码,供参考。

注意,这段代码在刚才进入的nginx-1.21.6目录下执行。

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

4 编译安装

同样在刚才的nginx-1.21.6目录下执行。

make
make install

5 验证

通过以上步骤,nginx程序被安装在/usr/local/nginx目录下,我们去检查一下。

#进入nginx安装目录
cd /usr/local/nginx

#启动nginx
./sbin/nginx

配置文件是./conf/nginx.conf

nginx主程序是./sbin/nginx

在当前目录下,通过以下命令查看是否支持ipv6,如果后面带有--with-ipv6,那么就是支持了。

./sbin/nginx -V

 每次使用绝对路径运行nginx很不方便,可以设置一个软连接,把nginx放到环境变量的目录下:

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

6 配置ipv6以及ssl

本文中,为了使网站支持https访问,还将配置ssl。你可以根据个人需求选择性地配置nginx。

6.1 配置ipv6

编辑nginx的配置文件nginx.conf

#编辑配置文件
sudo nano ./conf/nginx.conf

在server的大括号中加入对ipv6的监听,如图1所示,保存文件后重启nginx即可。

nginx ipv6配置 nginx ipv6模块_nginx ipv6配置

图1. 加入对ipv6的监听

#重启nginx
./sbin/nginx -s reload

 此时,可以直接用ipv6地址访问网站,如图2。

nginx ipv6配置 nginx ipv6模块_nginx_02

图2. 成功配置ipv6

6.2 配置ssl[3]

要配置ssl,我们首先应该去域名提供商处申请证书。

这里我们需要.pem和.key两个文件。我们在conf目录下新建一个名为cert的目录,用来存储证书。

#新建目录
mkdir ./conf/cert

此时,你需要将你的证书文件放入该目录下,如图3所示。

nginx ipv6配置 nginx ipv6模块_nginx_03

图3. 将证书文件放入cert目录下

 然后编辑nginx的配置文件:

sudo nano ../nginx.conf

在server的大括号内加入如下内容,加入后的效果如图4:

listen  443 ssl;
        listen  [::]:443 ssl;    #ipv6监听,如果无需ipv6可以去掉
        server_name  jianiel.top;    #你的域名
        ssl_certificate cert/jianiel.top_bundle.pem;    #你的证书
        ssl_certificate_key cert/jianiel.top.key;    #证书key
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;     #使用此加密套件。
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     #使用该协议进行配置。
        ssl_prefer_server_ciphers on;

nginx ipv6配置 nginx ipv6模块_nginx ipv6配置_04

图4. 添加ssl相关配置

 保存配置文件后重启nginx。

#重启nginx
cd /usr/local/nginx/sbin/
./nginx -s reload

使用域名访问网页后,发现已经是安全链接了,如图5。

nginx ipv6配置 nginx ipv6模块_nginx ipv6配置_05

图5. ssl配置生效

参考

[1] ubuntu下安装nginx时依赖库zlib,pcre,openssl安装方法

[2] NGINX ./configure详解

[3] nginx实现https访问(自建证书及认证证书)