在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]
参考
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
前往官网获取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
配置时需要通过 --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
同样在刚才的nginx-1.21.6目录下执行。
make
make install
通过以上步骤,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/
本文中,为了使网站支持https访问,还将配置ssl。你可以根据个人需求选择性地配置nginx。
编辑nginx的配置文件nginx.conf
#编辑配置文件
sudo nano ./conf/nginx.conf
在server的大括号中加入对ipv6的监听,如图1所示,保存文件后重启nginx即可。
#重启nginx
./sbin/nginx -s reload
此时,可以直接用ipv6地址访问网站,如图2。
图2. 成功配置ipv6要配置ssl,我们首先应该去域名提供商处申请证书。
这里我们需要.pem和.key两个文件。我们在conf目录下新建一个名为cert的目录,用来存储证书。
#新建目录
mkdir ./conf/cert
此时,你需要将你的证书文件放入该目录下,如图3所示。
然后编辑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。
#重启nginx
cd /usr/local/nginx/sbin/
./nginx -s reload
使用域名访问网页后,发现已经是安全链接了,如图5。
[1] ubuntu下安装nginx时依赖库zlib,pcre,openssl安装方法
[2] NGINX ./configure详解
[3] nginx实现https访问(自建证书及认证证书)