同时,还将通过 Git Hook 将 Hexo 博客的构建过程转移到线上,本地只需专注于创作与推送。借助 Gitea 仓库的在线编辑提交,还可实现 Hexo 博客的跨平台异地更新。
首先
,参考以下内容编辑
/etc/nginx/nginx.conf
文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
user www-data; worker_processes auto; pid /run/nginx.pid;
events { worker_connections 768; }
http { include mime.types; default_type application/octet-stream;
sendfile on;
# for gitea server { listen 82; server_name gitea.shipengx.com; # http 访问强制定向到 https 访问 return 301 https://gitea.shipengx.com$request_uri; }
# 加载 ssl 配置文件 include /etc/nginx/ssl/*.conf; }
|
Nginx 默认监听 80 端口,但笔者服务器的 80 端口和 81 端口都已经分配给了其它服务,所以这里选择监听 82 端口。
然后
,创建
/etc/nginx/ssl
目录并将自有域名的 SSL 证书上传到该目录。
其次
,创建 SSL 配置文件
/etc/nginx/ssl/ssl.conf
,并参考以下内容对其进行编辑:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
# for gitea server { # SSL 访问端口号为 443 listen 443; # 填写绑定证书的域名 server_name gitea.shipengx.com; ssl on; # 证书文件名称 ssl_certificate ssl/gitea.shipengx.com_bundle.crt; # 私钥文件名称 ssl_certificate_key ssl/gitea.shipengx.com.key; ssl_session_timeout 5m; # 请按照以下协议配置 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 请按照以下套件配置,配置加密套件,写法遵循 openssl 标准 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:3000/; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } }
|
从两个配置文件的内容我们不难发现,对
IP:82
和
gitea.shipengx.com
的访问都将被重定向到 443 端口,对 443 端口的访问又会被代理到
localhost:3000
,最终实现通过 82 端口和域名访问云服务器的 Gitea 服务。
最后
,重启 Nginx 服务,并在浏览器中输入域名我们便可访问自建 Gitea:
1
|
sudo systemctl restart nginx.service
|
首先
,安装
apache2-utils
工具:
1
|
sudo apt install apache2-utils
|
然后
,创建 Gitea 登录账户并为其设置密码:
1
|
sudo htpasswd -c /etc/nginx/.htpasswd new_user_name
|
回车后会要求为新建用户设置密码。
其次
,编辑
/etc/nginx/ssl/ssl.conf
文件,在
location /
项中添加
auth_basic
指令打开身份验证,并添加
auth_basic_user_file
指令指定我们上文中创建的登录凭证文件
/etc/nginx/.htpasswd
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
# for gitea server { # SSL 访问端口号为 443 listen 443; # 填写绑定证书的域名 server_name gitea.shipengx.com; ssl on; # 证书文件名称 ssl_certificate ssl/gitea.shipengx.com_bundle.crt; # 私钥文件名称 ssl_certificate_key ssl/gitea.shipengx.com.key; ssl_session_timeout 5m; # 请按照以下协议配置 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 请按照以下套件配置,配置加密套件,写法遵循 openssl 标准 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { auth_basic "Please enter your account password"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://localhost:3000/; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } }
|
最后
,重启 Nginx 服务:
1
|
sudo systemctl restart nginx.service
|
此时通过
IP:82
或域名访问 Gitea 时首先会来到 Nginx 的登录验证页面,只有输入
/etc/nginx/.htpasswd
中存在的用户名及密码才可通过验证:
但还有个问题,此前我们配置了 3000 端口作为 Gitea 服务的外部访问端口,因此通过访问
IP:3000
可以直接绕过 Nginx 的登录验证:
所以为确保安全,我们需要在云服务器的安全策略设置中拒绝外部对 3000 端口的访问请求: