服务器、域名、dns解析、ssl证书、nginx的配置使用

服务器、域名、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.comtest.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 EncryptZeroSSL
  • 有效期通常 90 天,可以自动续签(Nginx/Certbot 自动化脚本最常见)。
  • 泛域名证书(Wildcard SSL):*.dostorm.com 可覆盖所有子域名。
  • Cloudflare 提供通配符SSL,并能自动续签。

实现 HTTPS 访问流程简图

  1. 购买域名
  2. 拥有一台服务器(有公网IP)
  3. 在DNS中设置 A 记录 → 指向服务器IP
  4. 在服务器上配置Web服务(如Nginx)
  5. 申请并安装SSL证书
  6. 设置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;
}
}

验证配置文件是否正确

sudo nginx -t

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好了添加权限

  1. 确认 Nginx 运行用户(Ubuntu 默认是 www-data,验证一下):

    grep -i 'user' /etc/nginx/nginx.conf

    正常输出:user www-data;(无需修改)。

  2. SSL 目录的特殊权限/etc/ssl 是系统证书目录,通常属主是 root,如果只是让 Nginx 读取证书(而非写入),更安全的做法是仅给读权限,而非把属主改成 www-data:

    # 更合理的权限(root 属主,www-data 可读)
    sudo chown -R root:www-data /etc/ssl/onedostorm
    sudo chmod -R 644 /etc/ssl/onedostorm/* # 证书文件只读
    sudo chmod 755 /etc/ssl/onedostorm # 目录可进入
  3. 验证权限是否生效

    # 模拟 www-data 用户访问目录(无报错则正常)
    su - www-data -s /bin/bash -c 'ls -l /etc/ssl/onedostorm'

nginx简单配置

主配置文件地址

/etc/nginx/nginx.conf

多站点配置

sudo vim /etc/nginx/sites-available/【自己取】
/etc/nginx/sites-available/
├── example.com
├── another-site.com
└── default

一般都推荐使用 sites-availablesites-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 #再次更改所有权

配置好后使用下面代码检验

nginx -t

没问题在重启以下或者重新加载一下就ok了

sudo systemctl reload nginx
或者
sudo nginx -s reload