之前看了论坛里面一位老哥详细的介绍了cloudfare域名配置https访问,写的非常棒!奈何我的域名都是在阿里云上面,当然自己也有需求想把自己盒子上面搭建的个人博客配置成https访问,继我上篇文章《添加一个网站并且以域名+端口号的形式访问》,我的个人博客只能以不安全的http方式访问,如果遇到浏览器强行转换https访问,那就是无法打开网站,今天给大家分享一下困扰我半个月的nps穿透之后,如何利用阿里云域名配置SSL进行https访问自己盒子上面部署的网站。
前提条件:
1.有公网ip或者一台具有公网ip的服务器(vps也行)
2.确保你盒子上部署的网站能通过内网ip+端口正常访问(具体方法参考我上一篇文章)。
3.路由器开放外网访问的映射端口
教程开始
第一步:安装nps,如果您的本地80/443端口都被封掉,您仍然想和打开正常网站一样直接输入域名就实现访问,请继续看,如果您是本地公网ip+端口,并且无所谓隐藏端口号,请跳过这一步骤,从第二步:nginx配置SSL进行https访问。
1-1:在您拥有公网ip的服务器(或vps)上安装nps服务端
1.下载并配置服务端。
#下载文件,其他版本可以到https://github.com/ehang-io/nps/releases
wget https://github.com/ehang-io/nps/releases/download/v0.26.9/linux_arm64_server.tar.gz
#解压文件
tar -zxvf linux_arm64_server.tar.gz
2.设置配置文件。
#进入到配置文件目录
cd conf
#打开配置文件
vi nps.conf
可以修改里面的管理网站端口,密码等。
3.安装nps
复制代码
#返回到nps程序目录
cd ..
#安装nps
./nps install
#启动nps
#其他命令 nps start|stop|restart|uninstall|update or nps-update update
nps start
1-2:在您的盒子上面安装nps客户端
#下载客户端 其他版本见https://github.com/ehang-io/nps/releases
wget https://github.com/ehang-io/nps/releases/download/v0.26.9/linux_arm_v5_client.tar.gz
#解压
tar -zxvf linux_arm_v5_client.tar.gz
修改配置文件:
复制代码
#配置文件再conf/npc.conf
#内容如下:
[common]
server_addr=xxxxx:8024
conn_type=tcp
vkey=123
compress=true
crypt=true
rate_limit=10000
flow_limit=100
remark=test
max_conn=10
#pprof_addr=0.0.0.0:9999
复制代码
启动程序:
cd ..
./npc
第二步:nginx配置SSL进行https访问
关于nginx的ssl配置,网上教程非常丰富,作为小白我尝试了很多都没成功,最终请教了一个高人,配置成功了,配置内容如下:
下面我是以我上篇内容《添加一个网站并且以域名+端口号的形式访问》为例子,进行讲解配置。
2-1:找到我的blog的nginx配置文件根据上篇我的配置路径,在/etc/nginx/sites-available下,找到mywebsite,如下图]
2-2:打开文件把你的“mywebsite”里面内容替换如下
server {
listen 9001 ssl; #端口号是路由映射外网访问的端口号,我上篇文章设置的9001,方便理解,我还是设置9001
listen [::]:9001 ssl;#端口号是路由映射外网访问的端口号,我上篇文章设置的9001,方便理解,我还是设置9001
server_name www.niuren.vip;#你的域名,一定要用“www.xxx.com”的这个域名。
# ssl证书地址
ssl_certificate /etc/nginx/sites-available/8519863_www.niuren.vip.pem; # pem文件的路径
ssl_certificate_key /etc/nginx/sites-available/8519863_www.niuren.vip.key; # key文件的路径
# ssl验证相关配置
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; #使用服务器端的首选算法
root /var/www/html/blog;
# Add index.php to the list if you are using PHP
index index.html index.php index.htm index3.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
location ~ .*\.php(\/.*)*|.html$ {
include snippets/fastcgi-php.conf;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
include /etc/nginx/locations.d/*;
}
注意:上面的SSL证书地址,是你在阿里云申请ssl免费证书的地址,阿里云如何申请免费证书,自行百度,让后下载nginx证书,上传到对应路径,我的上传到这里了,如下图,所以路径是 /etc/nginx/sites-available文件下 ,也就是说你把阿里云申请的免费ssl证书上传到 /etc/nginx/sites-available文件夹下
如下图
2-3:完成上面步骤以后,在终端命令输入 cd /etc/nginx/sites-available进入到SSl目录
2-4:输入nginx -t出现下面提示,如下图
2-5:最后输入 nginx -s reload 重启nginx服务器,现在测试https://域名+端口(自己宽带有公网ip的用这个) 或者https://域名(通过服务器nps穿透的用这个)会发现浏览器带了一个小锁,证明成功了!