在腾讯云服务器上快速部署一个前端页面,当然也可以随便选择一个厂商
购买腾讯云轻型应用服务器(便宜)
腾讯云注册一个属于自己的域名(任意域名服务商,只要把域名解析到你的云服务器公网 IP 就行)
访问域名时将其解析到云服务器相应的公网 IP
选择解析类型:
A:
之后外网访问该域名将指向云服务器的公网 IP
外网流量打到云服务器后,提供一个 Nginx 转发服务器来控制具体访问内容
install:
可以自行在 nginx 官网下载指定版本,但是后续配置较为麻烦,选择yum
直接安装
$ sudo yum install nginx
# 设置开机启动
$ sudo systemctl enable nginx
# 启动服务
$ sudo systemctl start nginx
# 停止服务
$ sudo systemctl restart nginx
# 重新加载,因为一般重新配置之后,不希望重启服务,这时可以使用重新加载。
$ sudo systemctl reload nginx
安装完成后 nginx 相关文件在 /etc/nginx 目录(后续只需要关注 /etc/nginx/nginx.conf)
启动服务后如果遇到报错可以检查是否存在(默认 80)端口占用问题
腾讯云服务器提供了主域名(或者 www 主机)免费 ssl 申请的资格
填写相关实名资料申请完成 ssl 证书后,下载相应的 nginx 版本的证书
可以选择通过scp
命令将证书上传到云服务器硬盘:
scp 证书 user@ip:/目录
上传到指定目录后,vim /etc/nginx/nginx.conf 对 Https 相关 Server 配置进行更改
操作 conf 文件可以通过云服务器提供的 web shell 或者在本机通过 ssh user@ip
连接
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 域名; # 关联域名 baidu.com
root /usr/share/nginx/html;
ssl_certificate "证书.crt"; # 证书crt文件路径
ssl_certificate_key "证书.key"; # 证书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;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
配置完成后可以通过 nginx -t
命令检测配置是否正确(避免语法等问题)
如果需要配置子域名如上操作:
新建 server 选项配置 server_name,子域名也需要相应的 ssl 证书需要自行申请(或者购买主域名下的通配符证书)后配置 不过如果只是挂靠在一级域名下可以直接使用一级域名的 ssl 访问,会带有安全警告
配置子域名的 DNS 解析记录,在购买域名的服务上面添加子域名的主机记录以及相关的类型和 IP 地址
如在腾讯云购买的域名可以访问:https://console.dnspod.cn/dns/
主机记录 | 类型 | IP |
---|---|---|
二级域名 | A | 服务器公网 IP 1.116.219.68 |
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
通过通配符_
将 80 端口所有打进来的流量都通过重定向的方式跳转到相应 https 链接(也可以通过 rewrite 方式)
将开发 demo 的 dist 文件(create-react-app demo && yarn build
)同样以scp
命令上传到云服务器硬盘,将项目入口 html 文件路径配置在 root 上:
server {
listen 443 ssl;
server_name www.iakoug.cn; # 可以分别配置带有和不带有 www 的 server
root /home/lighthouse/christian/demo/build; # 项目路径
index index.html; # 入口文件
}
可能遇到配置完成后外部访问相关域名返回 403 forbidden 问题,检查 nginx.conf 文件顶部 user 配置权限是否为 root
# user nginx;
user root;
修改文件后重新启动 nginx 服务
sudo nginx -s reload
[root@VM-12-10-centos ~]# cat /etc/nginx/nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
return 301 https://$host$request_uri;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# Settings for a TLS enabled server.
#
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.iakoug.cn;
# root /usr/share/nginx/html;
# root /root/christian/homepage;
root /root/christian/blog-tech;
ssl_certificate "/home/iakoug.cn_nginx/iakoug.cn_bundle.crt";
ssl_certificate_key "/home/iakoug.cn_nginx/iakoug.cn.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;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name iakoug.cn;
# root /usr/share/nginx/html;
# root /root/christian/homepage;
root /root/christian/blog-tech;
ssl_certificate "/home/iakoug.cn_nginx/iakoug.cn_bundle.crt";
ssl_certificate_key "/home/iakoug.cn_nginx/iakoug.cn.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;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 443 ssl;
server_name home.iakoug.cn;
# root /root/christian/blog-tech;
root /root/christian/homepage;
error_page 404 /404.html;
location = /404.html {
root /root/christian/homepage;
}
# index index.html;
# return 301 https://iakoug.github.io;
}
Done