通过上一篇文章中的准备,我们已经有了云服务器、域名、也通过了域名备案和ICP备案等。下面目标发布一个公网可通过域名和HTTPS访问的网页。通过本文记录一下。
一、设置 SSH KeepAlive
我是通过MobaXterm,连接服务器的,服务器本身默认100s左右断开。下面通过一些设置,让SSH保持连接:
- 在
/etc/ssh/sshd_config
中添加以下配置,并重启 SSH 服务:
conf
ClientAliveInterval 60
ClientAliveCountMax 5
- 重启SSH服务
conf
service ssh restart # Ubuntu
service sshd restart # CentOS 7
二、Nginx安装 & 配置
选择Nginx作为Web服务器,下面进行安装和配置
2.1 安装Nginx
先更新软件包列表,确保系统的包管理器是最新的:
bash
apt update
再安装Nginx(-y 是apt的参数,表示自动确认,因为安装前会询问Do you want to continue? -y就无需手动确认)
bash
apt install nginx -y
2.2 启动 Nginx 并设置开机自启
bash
systemctl start nginx
systemctl enable nginx
2.3 验证 Nginx 是否已启动
bash
sudo systemctl status nginx
正常运行时应看到 active (running)
状态。
三、云服务器安全组开放http(80)
端口
我们尝试通过浏览器访问 http://{{ip}}
,会发现访问不了:
但是在服务器上通过curl -I http://localhost
可以访问:
这是因为云服务器的安全组没有开发http(80)
端口,快速添加一下:
操作成功后再次浏览器访问http://{{ip}}
即生效:
三、Nginx配置页面路径
我希望把前端项目文件架丢上去后就可以通过相关路径访问,所以用到了 $uri
(表示请求路径):
conf
server {
listen 80;
listen [::]:80;
root /var/www/html; # 指定 HTTP 根目录
index index.html;
location / {
try_files $uri $uri/ =404; # 处理 HTTP 请求
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
效果是:
- 通过
http://{{ip}}/a/b/c.html
会访问到/var/www/html/a/b/c.html
- 通过
http://{{ip}}/a/b/c
会访问到/var/www/html/a/b/c/index.html
- 找不到则 返回默认的
/40x.html
四、配置DNS域名解析
想要通过域名访问web服务,在阿里云域名控制台进行如下DNS解析设置:
测试生效。
五、支持HTTPS访问
我想要让网站既支持http访问也支持https访问,之前了一篇免费获取SSL证书并进行Nginx配置的文章(《永久免费!如何使用 Certbot 为域名配置永久免费的 HTTPS 证书》),直接参考操作即可。
经过上面的配置,现在可以通过 https://域名
访问web服务了。