# Nginx 反向代理

# 安装 Nginx

sudo apt-get install nginx       #这里使debian系统的命令安装nginx
whereis nginx                    #查找nginx目录,一般在/etc/nginx
cd /etc/nginx

image-20220321194453373

# 修改配置

修改配置 nginx.conf ,把下面这段代码添加到 http

server {
                listen 80;
                server_name xxx.com; # 绑定的域名
                location / {
                        proxy_set_header   X-Forwarded-For $remote_addr;
                        proxy_set_header   Host $http_host;
                        proxy_pass         "http://127.0.0.1:8080"; # 自定义端口号,这里转发到 8080
                }
        }

# 检查配置正确性

nginx -t

image-20220321202040167

# 重启 nginx
sudo nginx -s reload

# 安装 ssl 证书

# 腾讯云下载 ssl 证书

选择 nginx 格式,下载并解压缩

image-20220322182007889

# 配置 nginx

将解压得到的文件全部放到 /etc/nginx 目录下。

server {
                listen 443 ssl;
                server_tokens off;
                keepalive_timeout 5;
                server_name songlinlife.top; # 修改为证书域名
                ssl_certificate songlinlife.top_bundle.crt; # 修改为 crt 文件
                ssl_certificate_key songlinlife.top.key; # 修改为 key 文件
                ssl_session_timeout 5m;
                ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;   #可按照此加密套件配置,写法遵循 openssl 标准
                ssl_prefer_server_ciphers on;
                location / {
                        proxy_set_header   X-Forwarded-For $remote_addr;
                        proxy_set_header   Host $http_host;
                        proxy_pass         "http://127.0.0.1:4000";
                }
 }

重启 nginx

# github action

github 开一个 repo,设置权限为 private,在 github action 处创建一个新的 action:

image-20220321202742303

把下面的代码添加覆盖 yaml 文件:

name: Deploy site files

on:
  push:
    branches:
      - master # 只在master上push触发部署
    paths-ignore: # 下列文件的变更不触发部署,可以自行添加
      - README.md
      - LICENSE

jobs:
  deploy:
  
    runs-on: ubuntu-latest # 使用ubuntu系统镜像运行自动化脚本

    steps: # 自动化步骤
      - uses: actions/checkout@v2 # 第一步,下载代码仓库
      # 使用 node:10
      - name: use Node.js 10
        uses: actions/setup-node@v1
        with:
          node-version: 10
      # npm install
      - name: npm install
        run: |
          npm install -g hexo-cli
          npm install
        env:
          CI: true
      # build
      - name: hexo build
        run: |
          hexo clean
          hexo generate
        env:
          CI: true
      - uses: srt32/git-actions@v0.0.3
        with:
          args: git submodule update --init --recursive
      - name: Deploy to Server # 第二步,rsync推文件
        uses: AEnterprise/rsync-deploy@v1.0 # 使用别人包装好的步骤镜像
        env:
          DEPLOY_KEY: ${{ secrets.ACCESS_TOKEN }} # 引用配置,SSH私钥
          ARGS: -avz --delete --exclude='*.pyc' # rsync参数,排除.pyc文件
          SERVER_PORT: "22" # SSH端口
          FOLDER: ./ # 要推送的文件夹,路径相对于代码仓库的根目录
          SERVER_IP: ${{ secrets.REMOTE_HOST }} # 引用配置,服务器的host名(IP或者域名domain.com)
          USERNAME: ${{ secrets.REMOTE_USER }} # 引用配置,服务器登录名
          SERVER_DESTINATION: /home/ubuntu/blog/ # 部署到目标文件夹

注意对于下面这些配置,这些是这个 action 的环境变量,需要在 setting 里面自己设置:

image-20220321203437157

image-20220321203449583

# 域名解析

由于在国内开个服务器,因为没有域名备案导致没法用:

image-20220321204304121

有空可以搞个备案,但是现在嘛,emmmm 还是就这样吧

# 总结

有钱开个外网的服务器。。。。