服务器、域名、dns解析、ssl证书、nginx的配置使用.
个人总结
服务器不用多说,一般提供一个ipv4,然后买一个域名,然后通过dns解析,将配置服务器ip和域名关联起来了.如果是国内则需要ipc备案后才能关联起来,国外则直接能关联起来.然后申请ssl证书,一般是单个证书的,免费的,一个证书对应一个服务嘛,比如dns解析了一个a.dostorm.com的,那么就申请一个a.dostorm.com的ssl证书,如果是范域名的话则申请一个即可配置所有*.dostorm.com的服务了.到这里就可以通过服务器和域名和dns之间就算弄好了.
然后就是要配置https,也就是ssl证书了.一般就是通过nginx的.这里nginx我总结一下主要的几个用途.1、反向代理,就是将本地ip+端口代理到对外的80或443上面,外面端口扫描只能扫到80、443这个,避免了内部端口暴露. 2、能配置ssl和域名,让服务变成https到域名访问.3、可以负载均衡,就是一个域名配置多个服务器来进行压力分散.比如百度的,用户这么大,就单单一个服务器,用户一多就直接爆了,配置多个服务器,但域名都是一个www.baidu.com,压力就分散出去了,怎么分散的规则也可以
|
总结一下
用户 → 域名 → DNS → 服务器 IP → Nginx → 后端服务
|
域名(Domain)
- 域名其实就是互联网的门牌号,对应一串 IP 地址(方便人类记忆)。
- 顶级域(TLD):如
.com、.cn、.org、.net、.io 等。
- 二级域:如
dostorm.com。
- 子域名:
a.dostorm.com、test.dostorm.com。理论上可以无限创建。
- 域名解析(DNS):把域名与公网 IP 关联起来。最常用记录有:
A记录:域名 → IPv4 地址
AAAA记录:域名 → IPv6 地址
CNAME记录:域名 → 另一个域名(常用于CDN或跳转)
MX记录:邮件服务专用
DNS服务
- DNS(Domain Name System)提供域名解析服务。
- 你可以使用:
- 域名注册商自带DNS(如阿里云、腾讯云、Namecheap)
- 第三方DNS(如 Cloudflare、Google DNS)
- 有些 DNS 支持CDN加速、防DDoS、自动SSL续签等附加功能。
服务器(Server)
- 就是一直在线的计算机,有公网IP。
- 类型:
- 物理机(独立服务器)
- VPS(虚拟专用服务器)
- 云服务器(如阿里云、腾讯云、AWS、Vultr)
- 常用系统:Linux(Ubuntu、CentOS)、Windows Server。
- 网站运行时,一般会搭建:
- Web服务(Nginx / Apache)
- 数据库(MySQL / PostgreSQL)
- 应用(Node.js / Python / PHP)
SSL证书
- 用于开启 HTTPS(加密传输)。
- 免费证书常见:Let’s Encrypt、ZeroSSL。
- 有效期通常 90 天,可以自动续签(Nginx/Certbot 自动化脚本最常见)。
- 泛域名证书(Wildcard SSL):
*.dostorm.com 可覆盖所有子域名。
- Cloudflare 提供通配符SSL,并能自动续签。
实现 HTTPS 访问流程简图
- 购买域名
- 拥有一台服务器(有公网IP)
- 在DNS中设置 A 记录 → 指向服务器IP
- 在服务器上配置Web服务(如Nginx)
- 申请并安装SSL证书
- 设置HTTP自动跳转到HTTPS
nginx的配置使用
nginx加ssl配置网站
1、编写配置进入下面文件编辑配置
sudo vim /etc/nginx/sites-available/default
|
这是一个最简单的配置写法了
server { # 监听 IPv4 协议的 1001 端口(核心端口配置) listen 1001; # 监听 IPv6 协议的 1001 端口(可选,若服务器未开启 IPv6 可删除) listen [::]:1001;
# 网站根目录:指定静态文件存放的绝对路径(ubuntu 用户目录下的 jiashui 文件夹) root /home/ubuntu/jiashui; # 默认索引页:访问端口根路径时,优先查找 index.html 文件 index index.html;
# 匹配所有以 / 开头的请求(即所有访问 1001 端口的请求) location / { # 前端路由兼容规则(核心) # 执行逻辑: # 1. 先尝试访问请求的文件(如 /about.html、/static/css/main.css) # 2. 若文件不存在,尝试访问请求的目录(如 /admin/) # 3. 若以上都不存在,兜底返回根目录的 index.html,交给前端路由处理 try_files $uri $uri/ /index.html; } }
|
验证配置文件是否正确
2、赋予nginx读取文件权限和文件本身的权限
先查看文件夹的权限归属
ls -lah /home/ubuntu/jiashui
显示结果为 total 24K drwxr-xr-x 2 www-data www-data 4.0K Dec 19 16:36 . drwxr-x--x 10 ubuntu ubuntu 4.0K Dec 19 16:36 .. -rw-r--r-- 1 www-data www-data 16K Dec 19 16:36 index.html
|
(1)nginx权限
sudo chown -R www-data:www-data /home/ubuntu/jiashui sudo chmod 644 /home/ubuntu/jiashui/index.html sudo chmod -R 755 /home/ubuntu/jiashui
|
优化一下
# 第一步:设置所有者和组(不变,必要) sudo chown -R www-data:www-data /home/ubuntu/ssl/jg.dostorm.online
# 第二步:设置权限(优化:目录755,文件644) sudo find /home/ubuntu/ssl/jg.dostorm.online -type d -exec chmod 755 {} \; # 所有目录:rwx r-x r-x(允许遍历) sudo find /home/ubuntu/ssl/jg.dostorm.online -type f -exec chmod 644 {} \; # 所有文件:rw- r-- r--(只读,不执行) sudo chown -R www-data:www-data /home/ubuntu/ssl/jg.dostorm.online
|
生产环境下一般是放在/var/www/jiashui下的
sudo chown -R www-data:www-data /var/www/jiashui sudo find /var/www/jiashui -type d -exec chmod 755 {} \+ sudo find /var/www/jiashui -type f -exec chmod 644 {} \+
|
(2)文件权限
sudo chmod o+x /home/ubuntu
|
3、重加载nginx
sudo systemctl reload nginx
|
4、检验如果403,检查权限或Nginx日志(sudo tail -f /var/log/nginx/error.log)
配置ssl好了添加权限
确认 Nginx 运行用户(Ubuntu 默认是 www-data,验证一下):
grep -i 'user' /etc/nginx/nginx.conf
|
正常输出:user www-data;(无需修改)。
SSL 目录的特殊权限:/etc/ssl 是系统证书目录,通常属主是 root,如果只是让 Nginx 读取证书(而非写入),更安全的做法是仅给读权限,而非把属主改成 www-data:
sudo chown -R root:www-data /etc/ssl/onedostorm sudo chmod -R 644 /etc/ssl/onedostorm/* sudo chmod 755 /etc/ssl/onedostorm
|
验证权限是否生效:
su - www-data -s /bin/bash -c 'ls -l /etc/ssl/onedostorm'
|
nginx简单配置
主配置文件地址
多站点配置
sudo vim /etc/nginx/sites-available/【自己取】
|
/etc/nginx/sites-available/ ├── example.com ├── another-site.com └── default
|
一般都推荐使用 sites-available 和 sites-enabled 的方法来管理多个站点的配置,这种方法更清晰、更易管理,尤其是在部署多个站点时,能够让配置更具结构性和可维护性。
*最简单的配置
server { listen 8123; listen [::]:8123;
root /data/hexo; index index.html;
location / { try_files $uri $uri/ /index.html; } }
|
*******这是一个标准后端带有ssl证书的服务
# HTTPS 配置(443 端口) server { listen 443 ssl; listen [::]:443 ssl;
server_name jg.dostorm.online;
# SSL 证书配置 ssl_certificate /home/ubuntu/ssl/jg.dostorm.online/jg.dostorm.online_nginx/jg.dostorm.online_bundle.crt; ssl_certificate_key /home/ubuntu/ssl/jg.dostorm.online/jg.dostorm.online_nginx/jg.dostorm.online.key;
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on;
# 代理 FastAPI 请求 location / { proxy_pass http://127.0.0.1:8000; # 代理到 FastAPI proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
|
后端一般只要nginx的log文件,这个权限要给nginx的
sudo chown -R www-data:www-data /home/ubuntu/ssl/jg.dostorm.online #更改文件和目录的所有权:
sudo find /home/ubuntu/ssl/jg.dostorm.online -type d -exec chmod 755 {} \; #设置目录权限 sudo find /home/ubuntu/ssl/jg.dostorm.online -type f -exec chmod 644 {} \; #设置文件权限 sudo chown -R www-data:www-data /home/ubuntu/ssl/jg.dostorm.online #再次更改所有权
|
***这是一个标准的静态的nginx的服务
# HTTP 到 HTTPS 重定向配置(80 端口) server { listen 80; listen [::]:80;
server_name one.dostorm.com; # 你的域名
location / { return 301 https://$host$request_uri; # 将所有 HTTP 请求重定向到 HTTPS } }
# HTTPS 配置(443 端口) server { listen 443 ssl; listen [::]:443 ssl;
server_name one.dostorm.com;
# SSL 证书配置 ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on;
root /home/ubuntu/jiashui; index index.html;
location / { try_files $uri $uri/ /index.html; # 用于返回静态文件 } }
|
前端服务由于nginx要读取相关文件,还要将项目的权限给nginx。
sudo chown -R www-data:www-data /home/ubuntu/ssl/jg.dostorm.online #更改文件和目录的所有权:
sudo find /home/ubuntu/ssl/jg.dostorm.online -type d -exec chmod 755 {} \; #设置目录权限 sudo find /home/ubuntu/ssl/jg.dostorm.online -type f -exec chmod 644 {} \; #设置文件权限 sudo chown -R www-data:www-data /home/ubuntu/ssl/jg.dostorm.online #再次更改所有权
|
配置好后使用下面代码检验
没问题在重启以下或者重新加载一下就ok了
sudo systemctl reload nginx 或者 sudo nginx -s reload
|