背景
之前一直使用群晖域名+端口号进行远程访问,一切安好。近段时间发现在公司访问个人主页时失效,公司内网环境下全部群晖部署的服务都无法使用了。多番尝试发现应该是公司内网屏蔽了除80和443的其他端口,家里宽带是屏蔽80和443端口的,两边端口没有交集了。无奈之下趁阿里云还有99块钱的云服务器买了个玩玩,核心思想是运用阿里云主机作为跳板机,最终服务器还是布置在群晖上,这样后期如果涨价了直接更换跳板机反向代理设置即可。(域名也是需要另外购买的,我之前就有,这里说明下。)
操作
Nginx安装部署
云服务器购买完成后远程登陆安装Nginx。
安装依赖项
yum install openssl #SSL功能需要openssl库
yum install zlib #gzip模块需要zlib库
yum install pcre #rewrite模块需要pcre库
安装启动Nginx
yum install nginx #安装nginx
service nginx start #启动nginx
防火墙白名单增加使用端口
systemctl start firewalld #启动防火墙,若出现firewall is not running才需运行
firewall-cmd --permanent --zone=public --add-port=80/tcp #http访问使用
irewall-cmd --permanent --zone=public --add-port=443/tcp #https访问使用
firewall-cmd --reload #重启防火墙设置生效防火墙白名单增加使用端口
配置Nginx反向代理
首先配置二级域名域名解析,解析到购买的云服务器公网IP。
配置Nginx.conf文件
vim /etc/nginx/nginx.conf #编辑Nginx配置文件
使用80端口配置反向代理
server {
listen 80;
listen [::]:80;
server_name domain; #配置的二级域名
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://群晖域名:端口号; #群晖服务器域名+映射端口号
proxy_set_header X-Forwarded-host $http_host; #有的功能要加此句,否则反代后还是会定向到原群晖域名
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
重启Nginx使配置生效
nginx -s reload #重启Nginx使设置生效
https反向代理
Nginx直接使用http反向代理并用二级域名进行访问是比较简单的,但是有一些应用考虑到在公司环境中使用的数据安全性,还是使用https访问更好。此处有一个问题会比较麻烦,因为https访问是需要SSL证书的,通过配置二级域名来访问每一个二级域名都需要一个证书,购买证书费用不低。
开始考虑的是使用Let‘s empty免费证书申请并定期自动延期,配置时阿里云主机验证一直存在问题报错,没研究出来到底问题在哪儿。后来发现有阿里云账户的可以每年免费申请20个免费SSL证书(有效期3个月),于是使用阿里云免费证书进行SSL证书的部署。
阿里云-数字证书管理服务-证书管理-SSL证书管理-个人测试证书(原免费证书)-立即购买,选项默认,购买完成后在SSL证书管理中创建证书,路径如下图
由于域名解析就在阿里云服务器,DNS选择自动获取(默认),创建后等待证书审核完成即可下载。下载Nginx对应的证书。
使用WinSCP登录CenterOS,IP为阿里云服务器公网IP,找到想要上传的目录,我存放的目录为/etc/pki/nginx,上传文件。
配置Nginx.cong
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name domain; #配置的二级域名
root /usr/share/nginx/html;
ssl_certificate "/etc/pki/nginx/home.binsx.com.pem";
ssl_certificate_key "/etc/pki/nginx/home.binsx.com.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://群晖域名:端口号; #群晖服务器域名+映射端口号
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
评论区