全栈-nginx配置

1,024 阅读4分钟

安装 nginx

服务器环境:CentOS 7.6 64位

yum install nginx -y   //安装 nginx
nginx  //启动nginx

直接打开 192.168.1.2 (此处是你自己服务器的ip)

修改nginx 配置文件

vim /etc/nginx/nginx.conf 
# 将如下 文件内容 写入 配置文件,报错退出即可
# vim 基本操作
i  开始写入(进入编辑模式)
esc 退出编辑模式
:wq 保存并退出

cat /etc/nginx/nginx.conf  查看文件内容

配置内容(此处是实现一个静态服务器的功能)

  • 配置文件内容
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        # 注意:将 root 对应的目录改一下即可,其他都没有变
        root         /data/www;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
  • 创建文件
// 创建你的项目目录
mkdir -p /data/www

// 并在/data/www目录下创建一个html文件让nginx访问
touch index.html

// index.html代码为
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>hello world </title>
</head>
<body>
Hello world!
nginx successful
</body>
</html>
  • 重启
nginx -s reload

  • 配置域名

很简单,只需要修改一个数据即可

# 修改nginx 的配置文件
server_name  www.baidu.com;
# 重启 nginx
service nginx stop
service nginx start

效果

几个nginx基本命令

#查看 nginx 的配置文件地址 与 检验 nginx 的语法是否正确
nginx -t
nginx 启动
nginx stop 停止

踩坑:

nginx 配置文件中 对 格式要求比较严,分号要加,换行也要按照格式来,因为我们写 nginx的配置文件基本都是 vim 中写的,所以要多多注意,建议您在外面写好,复制粘贴过去

  • 因为 ; 没有加,报错(踩过坑)
  • 因为 端口 设置两个相同了,所以 nginx 在启动时报错

综上所述:使用 nginx -t 来检查并看提示即可

nginx 配置 https 证书

  • 证书下载 说明: 点击 nginx 右侧的 下载 点击帮助,里面都讲解的非常详细

下载下来有两个文件 .key 与 .pem

  • 上传到服务器 使用工具将这两个文件上传到服务器上 具体这个软件如何使用,如有必要单独开一篇文章

  • nginx 文件配置修改

# 注意:下面的 配置是额外添加的,不是修改之前的
server {
listen 443 ssl;
server_name www.baidu.com; 

ssl_certificate  ./certxxx.pem; # 文件路径
ssl_certificate_key ./cert/xxx.key; # 文件路径
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:80/;  # 代理到当前服务器的 80 端口
}
}

nginx 启动express服务 绑定到 对应域名

前置条件:我们需要安装 node npm git等

  • 前提配置

    # 安装 node
     yum install -y nodejs
    # pm2
    npm install -g pm2 --registry https://registry.npm.taobao.org
    # git
    yum install git
    
  • 创建一个项目

    mkdir demo
    cd demo
    npm init
    touch express_demo.js
    vim express_demo.js
    
    # 写入如下代码
    
    var express = require('express');
    var app = express();
    
    app.get('/', function (req, res) {
        res.send('this is api use express');
    })
    
    var server = app.listen(1234, function () {
        var host = server.address().address
        var port = server.address().port
        console.log("应用实例,访问地址为 http://%s:%s", host, port)
    })
    
    # 安装包
    npm install --registry https://registry.npm.taobao.org
    
  • 启动 express 服务

    # 方法一express_demo.js(当然选择第一种)
    # 此方法是常驻线程,也就是说 命令行关闭,服务依旧在
    # 此处可能报错,因为 node 版本问题,请移步最下面
    pm2 start express_demo.js
    # 方法 二
    # 此方法命令行关闭服务就不在了
    node express_demo.js
    
    # 上面的步骤设置过,直接可以通过
    ip:端口(192.168.1.1:1234)  访问 express 服务
    
  • 设置 nginx配置

    
        server {
            listen       80;
            server_name  api.xxx.cn; #需要绑定的接口域名
            root         /xx/xxx;
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
            location / {
            }
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }
    
  • 重启

    service nginx stop
    service nginx start
    
  • 成功

  • 参考链接

    pm2详细

  • 避坑指南

    • pm2 express_demo.js 报错

      #报错内容
      node_modules/pm2/node_modules/chalk/source/index.js:103
      #原因:
      node 的版本过低
      node -v 查看下 (6.多)
      
      #解决 升级 node
      npm install -g n  # n 是专门管理 n 的一个工具
      # 升级到最新的 node 版本
       n latest 
       # 注意成功后 需要关闭 远程窗口,重新登录
       node -v (v14.7.0)
      

    • nginx restart 报错

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details. 执行 systemctl status nginx.service 一般都是端口报错,说明 nginx 配置的有问题

  1. 按照这个 帖子试过 www.cnblogs.com/hhyf/p/1151…
  2. 再次检查一遍 nginx 的配置是否有问题

试了很多办法还是不行

#解决: 强制 kill nginx 的进程 pkill -9 nginx 重启 nginx



[nginx报错](https://www.cnblogs.com/hhyf/p/11518919.html)