Nginx 配置解析

参考

Nginx 配置文件

  • nginx配置文件位置:/etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf
  • nginx配置文件定义了各个块的配置,以及指令
  • worker_processes :定义了Nginx的工作进程数。
  • http { ... }: 定义了HTTP协议相关的配置。可以在这里使用 include 指令来加载额外的配置文件,就是子配置文件
    • 子配置文件一般位于 /etc/nginx/conf.d/ 目录下(或其他由主配置文件中 include 指令指定的目录),以 .conf 结尾的文件名。
    • 子配置文件一般在 http 上下文中定义的 server { ... }
  • 主配置文件:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # /etc/nginx/nginx.conf
    http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    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;

    keepalive_timeout 65;

    #gzip on;

    include /etc/nginx/conf.d/*.conf;
    }

Nginx 配置文件示例

  • 简单的HTTP配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    server {
    # 监听80端口
    listen 80;

    location / {
    # 指定静态页面的根目录
    root /usr/share/nginx/html;

    # 指定默认首页
    index index.html;

    # 按照指定的顺序检查文件是否存在,并根据结果处理请求。
    # $uri:首先尝试将请求的URI直接映射到文件系统上的一个文件。例如,如果请求的是 /img/photo.png,Nginx会检查 /usr/share/nginx/html/img/photo.png 是否存在。
    # $uri/:如果上述步骤失败(即找不到对应的文件),则尝试将其视为一个目录,并查找该目录下的默认索引文件(如由 index 指令指定的 index.html)。
    try_files $uri $uri/ @rewrites;
    }

    location @rewrites {
    rewrite ^(.+)$ /index.html last;
    }
    }

  • HTTPS配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    server {
    listen 80;
    server_name exwckv.top;
    return 301 https://$host$request_uri; # 将所有HTTP请求重定向到HTTPS
    }

    server {

    # 添加 ssl 参数表示通过此端口进行的所有通信都应使用SSL/TLS加密。需配置SSL证书和私钥文件的位置
    listen 443 ssl;

    # 用于定义虚拟主机(也称为基于名称的虚拟主机)所响应的域名或主机名
    # 如果没有域名,可以省略 server_name 指令或者直接指定服务器的公网IP地址
    # 当 Nginx 接收到一个请求时,它会根据 HTTP 请求头中的 Host 字段来匹配 server_name,从而确定使用哪个 server 块来处理该请求。
    server_name exwckv.top;

    ssl_certificate /etc/nginx/certs/fullchain.pem; # 指定SSL证书的位置
    ssl_certificate_key /etc/nginx/certs/privkey.pem; # 指定SSL私钥的位置

    location / {
    root /usr/share/nginx/html;
    index index.html;
    try_files $uri $uri/ @rewrites;
    }

    location @rewrites {
    rewrite ^(.+)$ /index.html last;
    }

    # 解决跨域问题(可选)
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
    add_header Access-Control-Allow-Headers *;
    }

nginx属性设置

  • server_name: 配置中用于定义虚拟主机(也称为基于名称的虚拟主机)所响应的域名或主机名。注意:多个模块都匹配时,按照:精确匹配->通配符匹配->正则匹配
    • 精确匹配:确切的域名,例如 server_name example.com;
    • 通配符匹配: 通配符匹配,例如 server_name *.example.com;
    • 正则匹配: 正则匹配 需要在名称前面加上波浪线(~),例如 server_name ~^(www\.)?example\.com$;
    • 默认服务器:没有其他 server_name 匹配时使用的服务器,可以在 listen 指令后添加 default_server 参数。例如,listen 80 default_server;
    • 多域名支持:你还可以在一个 server_name 指令中列出多个域名,用空格分隔。例如,server_name example.com www.example.com;。这样,这两个域名都会指向同一个 server 块。

常用nginx指令

  • nginx -t: 检查配置文件是否有误
  • nginx -s reload: 重载配置文件,不会重启服务器,只是重新加载配置文件,不会影响正在运行的服务

Node.js安装教程

参考

Linux安装Node.js

  1. 安装Git
  2. 获取NVM源码
    1
    git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
  3. 配置NVM环境变量
    1
    2
    sudo sh -c 'echo ". ~/.nvm/nvm.sh" >> /etc/profile'
    source /etc/profile
  4. 配置npm镜像源为阿里云镜像
    1
    npm config set registry http://registry.npmmirror.com

Windows 安装nvm

  • GitHub下载nvm
  • 安装nvm,安装时设置nvm安装路径和nodejs安装路径,会自动添加NVM_HOMENVM_SYMLINK系统变量(不是管理员运行可能添加失败)。

NVM使用

  • nvm install <version> [arch]
    • <version>:可以是具体版本号、”latest”(最新稳定版)或 “lts”(最新长期支持版)。
  • nvm use <version>:切换到指定版本的Node.js环境。
  • nvm npm_mirror [url] : 设置 npm 镜像源,默认为 https://github.com/npm/cli/archive/。留空 [url] 使用默认地址。

指定 NPM 镜像仓库

  • 命令全局设置 NPM 镜像npm config set registry <镜像地址>
  • 查看当前仓库 npm config get registry

镜像列表

Hexo 博客编写教程

参考

安装Hexo

  1. 安装Node.js Git
  2. nodejs 安装 Hexo npm install -g hexo-cli

Hexo使用

初始化项目

  1. 创建博客项目 hexo init blog
  2. 进入项目目录 cd blog
  3. 安装依赖包 npm install

运行项目

  1. 运行 hexo g 生成静态页面
  2. 运行 hexo server 运行服务器
  3. 就可以本地访问 http://localhost:4000/ 查看博客了

写作

  • 本地文档引用
    1
    2
    3
    {% post_link [filename] %}
    比如markdown[Windows10电脑清理](./Windows10电脑清理.md)
    在Hexo应该 {% post_link Windows10电脑清理 %} 这么写

项目结构

1
2
3
4
5
6
7
8
9
.
├── _config.yml # 网站的配置文件。 您可以在此配置大部分的参数。
├── package.json # 应用程序的信息
├── public # 静态页面文件夹。
├── scaffolds # 模版 文件夹。
├── source 资源文件夹。 是存放用户资源的地方。
| ├── _drafts
| └── _posts # 除 _posts 文件夹之外,_ 开头文件/文件夹被隐藏
└── themes # 主题 文件夹。 Hexo 会根据主题来生成静态页面。

使用Nginx反向代理

  1. 安装nginx
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    version: '3.8'
    services:
    nginx:
    image: nginx:1.27.3
    container_name: nginx
    ports:
    - "80:80"
    # - "4443:443"
    volumes:
    - E:/datum/知识库/计算机技术/docker/compose-nginx/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro
    - /usr/share/nginx/html/:/usr/share/nginx/html/
  2. 配置nginx 例如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # /etc/nginx/conf.d/default.conf 一般nginx配置在这个位置
    server {
    # 监听80端口
    listen 80;
    # 如果没有域名,可以省略 server_name 指令
    # 或者直接指定服务器的公网IP地址
    # server_name your-public-ip;

    location / {
    # 指定静态页面的根目录
    root /usr/share/nginx/html;
    index index.html;
    try_files $uri $uri/ @rewrites;
    }

    location @rewrites {
    rewrite ^(.+)$ /index.html last;
    }
    }