云上建站终极攻略:域名注册+双协议部署+备案全流程详解
1.前提准备
首先准备好网站的代码,在华为云上租一个服务器,把代码先拷贝到服务器上,记录下项目的路径。
2.配置vscode ssh,方便开发(可跳过)
华为云上远程登录远程 Linux,检查 SSH 服务状态:
sudo systemctl status sshd
若未安装,安装 openssh-server:
sudo apt install openssh-server # Debian/Ubuntu
sudo yum install openssh-server # CentOS/RHEL
在本地生成,用cmd生成SSH 密钥认证:
ssh-keygen -t rsa
然后用sftp将秘钥文件传输到到远程服务器的 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys # 设置安全权限
在服务器上
sudo nano /etc/ssh/sshd_config
确保config中的这两项策略正确
PermitRootLogin yes # 允许 root 登录
PasswordAuthentication yes # 启用密码验证
接着重启一下ssh服务
sudo systemctl restart sshd
然后打开 vscode 编辑器
-
按下快捷键打开命令面板:
-
Windows/Linux:
Ctrl+Shift+P -
macOS:
Cmd+Shift+P
-
-
输入命令:
Remote-SSH: Connect to Host...
-
选择
+ Add New SSH Host... -
在config中配置你服务器的ip -
Host 192.168.1.100 # 服务器IP/别名 HostName 192.168.1.100 User root这一步就完成了,连接后可以直接通过vscode访问服务器中的文件。
3.在腾讯云或者服务运营商(华为云关闭了domain购买服务)购买自己的域名
在哪个运营商购买所有的步骤和思路都差不多,但是在哪买的就要在哪里配置dns解析,不然解析不了!
填写好资料购买,需要一定时间审核,成功后进行下一步

4.ICP备案
在备案界面输入自己的域名等信息,上传资料提交审核就可以了,这一步也比较简单。
5.申请SSL证书

控制台中搜索ssl,选择云证书管理服务,选择购买证书

证书类型自行选择,单域名可以选择免费的DV证书DigiCert测试证书(三个月有效期)
此时根据提示可以得到,主机记录,记录类型,记录值,这三个要记录下来。然后在控制台搜索dns。

添加创建自己的公网域名,然后点击管理解析,创建新的记录集,复制刚刚记录的主机记录,记录类型,记录值按照要求填写进去,注意有些运营商记录值要求加上双引号"..."。手动添加dns解析记录后回到ssl证书那里点击验证,一般就验证成功了。
6.绑定公网ip和域名
回到dns解析添加记录值界面,如果已经购买有公网ip,此时添加一条记录值,记录类型为A(ipv4),主机记录与之前相同,记录值为你的公网ip,添加成功后你的公网ip就和域名绑定起来了。
7.下载部署ssl证书密钥
ssl证书验证成功后可以点击下载,下载专门的密钥,本文因为是用nginx,所以是下载的nginx的密钥和证书,把密钥下载到本地环境后通过sftp上传到服务器
sudo mkdir -p /etc/ssl/certs # 存放证书
sudo mkdir -p /etc/ssl/private # 存放私钥
sudo cp your_domain.crt /etc/ssl/certs/ # 复制证书
sudo cp your_domain.key /etc/ssl/private/ # 复制私钥
8.配置nginx
创建目录
sudo vi /etc/nginx/conf.d/yourdomain.conf
编辑内容主要是配置443端口https
server {
listen 80;
server_name yourdomain;
return 301 https:/yourdomain$request_uri;
}
# HTTPS 主配置
server {
listen 443 ssl http2;
server_name yourdomain;
ssl_certificate /etc/ssl/certs/fullchain.pem; # 证书路径
ssl_certificate_key /etc/ssl/private/your_domain.key; # 私钥路径
# 安全协议配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# 会话设置
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
# 安全头
add_header Strict-Transport-Security "max-age=63072000" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# 添加CORS支持
add_header 'Access-Control-Allow-Origin' 'https://www.innoevsic.com' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Private-Network' 'true' always; # 针对Edge的特殊需要
# 网站根目录需要配置自己的
root /idea/idea;
index index.html index.htm;
# 主位置块
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
add_header Cache-Control "public, no-transform";
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# 错误页面
error_page 404 /404.html;
location = /404.html {
internal;
}
}
# 重定向裸域名到 www
server {
listen 443 ssl http2;
server_name innoevsic.com;
ssl_certificate /etc/nginx/ssl/www.innoevsic.com/yourdomain.crt;
ssl_certificate_key /etc/nginx/ssl/www.innoevsic.com/yourdomain.key;
return 301 https://yourdomain$request_uri;
}
重载nginx使配置生效
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx
PS如果有后端,也需要在后端配置相应的ssl密钥和证书
.js后端配置示例:
// SSL 证书配置
const privateKey = fs.readFileSync('/etc/nginx/ssl//yourdomain.com/yourdomain.key', 'utf8');
const certificate = fs.readFileSync('/etc/nginx/ssl/yourdomain//yourdomain_bundle.crt', 'utf8');
const credentials = { key: privateKey, cert: certificate };
9.通过域名访问网站测试
此时在浏览器输入你的域名应该就可以打开网站了,如果打不开可以看一下服务器的443端口是否开放,具体操作是在服务器中找到安全组,配置规则,开放0.0.0.0(可以控制只开放自己本地的ip测试一下访问)到443端口号。
10.网安备案
登录全国互联网安全管理平台,注册自己的身份信息,提交就可以了,一般会打电话通知的。最后记得把icp备案号和网安备案号加上在页脚的位置。
11.只配置http的思路
那就不需要申请ssl证书和配置ssl密钥,跳过步骤五直接进行步骤六,然后在nginx中只配置80端口的内容指向项目路径和index,服务器开放80端口号访问。
nginx配置:
server {
listen 80; # HTTP默认端口
server_name your_domain.com www.your_domain.com; # 你的域名
root /var/www/your_domain; # 网站文件根目录
index index.html index.htm; # 默认索引文件
# 基本的日志配置
access_log /var/log/nginx/your_domain.access.log;
error_log /var/log/nginx/your_domain.error.log;
location / {
try_files $uri $uri/ =404; # 标准处理规则
}
# 可选的robots.txt处理
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}
12.从http升级到https思路
从第五步开始申请一个新的ssl证书,完成域名验证,把证书下载下来上传到服务器指定位置,编辑nginx的配置文件加入https的配置,把80端口http也重定向到https,同时在后端也加入ssl证书相关配置。
重载一下nginx配置就可以了。
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx
Nginx配置HTTPS/HTTP全流程指南

被折叠的 条评论
为什么被折叠?



