记一次为Vultr的WordPress主机配置IPv6+SSL访问
本文最后更新于 383 天前,其中的信息可能已经有所发展或是发生改变。

说来也怪,这个其实是我搞梯子的时候研究Nginx的副产物。

先提一下VPS的当前环境:从Vultr直接部署的WordPress主机,Ubuntu 18.04.6 LTS,Nginx 1.20.1。已经使用了Let’s Encrypt的SSL服务获取了证书。其他的都没啥关系,就不提了。

如果你还没有获取到SSL证书,你可以使用Certbot获取一个免费的,虽是英文教程但浅显易懂,中文教程也好找。

编译替换Nginx

我发现附带的Nginx是没有IPv6支持的,可以使用这个命令来验证:nginx -V。输出大概是这样:

nginx version: nginx/1.20.1
built by gcc 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
built with OpenSSL 1.1.1  11 Sep 2018
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.20.1/debian/debuild-base/nginx-1.20.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

不过截至写这篇文章的时候,Vultr已经可以部署基于Ubuntu 20.04的WordPress主机了。如果你运行上面的命令,发现带有“–with-ipv6”的话,那么就可以跳过这一步了。如果没有,就先把configure arguments后面的内容复制下来备用。

SSH连接服务器,使用wget https://nginx.org/download/nginx-1.20.1.tar.gz下载Nginx 1.20.1版本(或者核对上面命令输出中的nginx version,一定要确认版本一致),使用tar -zxvf nginx-1.20.1.tar.gz命令解压。

安装一下依赖库,命令如下:

sudo apt upgrade
sudo apt install build-essential libtool libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev

进入刚刚解压的文件目录,并执行

./configure --what-you-have-copied-just-now --with-ipv6

将其中--what-you-have-copied-just-now替换成你刚刚复制的内容。不过,不加–with-ipv6其实也可以,新编译的默认是带有IPv6支持的。

如果没有任何报错的话,再执行make来编译(不要make install)。否则可以将报错内容Google一下,多半是少了什么库,对照着装就是了。

Vultr的WordPress主机,Nginx可执行文件在/usr/sbin,配置文件在/etc/nginx/conf.d。做一下备份,然后将新编译好的nginx可执行文件替换进原文件,然后重启服务即可加入IPv6模块:

mv /usr/sbin/nginx /usr/sbin/nginx.bak
mv objs/nginx /usr/sbin/
systemctl restart nginx.service

设置DNS解析

我使用的是阿里云DNS,直接将原域名AAAA解析至服务器的IPv6地址即可。这个应该不难。

等一小会后,执行nslookup your.domain,解析到的应该是IPv6和v4两个地址。

编辑Nginx配置文件

先备份,再用你喜欢的方法编辑/etc/nginx/conf.d/wordpress_https.conf。如果内有两个server开头的大括号,有一个带有”managed by Certbot“标记,就注释掉或者删掉另外一个大括号连同里面的内容。我之前就是没有注意到实际的配置文件,导致IPv6访问死活没有SSL。

找到listen 443 ssl;,然后在后面加入一行

listen [::]:443 ssl ipv6only=on;

即可让Nginx监听IPv6的443端口内容。如果你还想保留IPv6的HTTP访问(无SSL),再编辑 /etc/nginx/conf.d/wordpress_http.conf,在listen 80;后面加入一行listen [::]:80;

检验IPv6访问及证书

SSL Server Test (Powered by Qualys SSL Labs)中输入你的域名,可以分别检验IPv6和v4下的SSL访问情况。你也可以自行打开网页检验。

参考文献

Ubuntu编译安装nginx以及配置自动启动 – 浮梦云烟 – 博客园 (cnblogs.com)

Linux中查找nginx安装目录和nginx.conf配置文件目录_纸上得来终觉浅,绝知此事要躬行-CSDN博客_查找nginx目录

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇