avatar

目录
Nginx快速上手

Nginx快速上手

一、安装nginx

1.1 安装步骤

  1. 官网下载安装包

  2. 解压到指定目录

    Code
    tar -zxvf nginxxxxxxx
  3. 安装

    Code
    cd /xxx/xxx/xxx # 进入解压目录
    ./configure
    make
    sudo make install
  4. 查找安装路径

    Code
    $whereis nginx
    nginx: /usr/local/nginx #默认路径

1.2 可能的问题

问题1

  • 报错信息

    Code
    checking for OS
    + Linux 3.10.0-1062.9.1.el7.x86_64 x86_64
    checking for C compiler ... not found

    ./configure: error: C compiler cc is not found
  • 报错原因

    因为没有装编译程序。

  • 解决方法

    Code
    sudu yum -y install gcc
    sudo yum -y install gcc-c++

问题2

  • 报错信息

    Code
    ./configure: error: the HTTP rewrite module requires the PCRE(或者zlib) library.
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre=<path> option.
  • 报错原因

    没有安装PCRE(或者zlib)库。

  • 解决方法:

    Code
    sudo yum -y install pcre-devel
    sudo yum install -y zlib-devel

二、基本使用

要使用命令,先进入nginx安装目录

Code
cd /usr/local/nginx/sbin/

2.1 启动

Code
sudo ./nginx 
ps aux|grep nginx # 查看进程

在浏览器输入服务器IP或者域名会看到如下界面,即启动成功:

avatar

2.2 停止

Code
sudo ./nginx -s stop		# 此方式停止步骤是待nginx进程处理任务完毕进行停止。
sudo ./nginx -s quit # 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

2.3 配置更新生效

在不停止nginx服务的情况下,使配置生效:

Code
./nginx -s reload

三、配置

3.1 配置首页

nginx默认是占用80端口,也就是说当输入域名或IP的时候,会显示2.1中的欢迎页面。这里我们可以进行修改。

  1. 进入配置文件

    Code
    cd /usr/local/nginx/conf
    sudo vim nginx.conf
  2. 查看配置

    server {
    listen 80;
    server_name localhost;

    #charset koi8-r;

    #access_log logs/host.access.log main;

    # 这里就是网站的根目录(在nginx安装目录下的html目录)
    location / {
    root html;
    index index.html index.htm;
    }

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    # 配置错误页面
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root html;
    }
    }

    可以看到根目录在(/usr/local/nginx/html),所以我们可以把自己的页面放到这个文件夹下。

  3. 将自己的页面文件放到html目录下

    avatar

  4. 再次刷新浏览器,可以看到成功替换成我们自己的页面了

    avatar

3.2 配置SSL

3.2.1 安装 with-http_ssl_module 模块

SSL需要安装该模块,否则会报错:(如果已经安装过了,可以跳过)

Code
- nginx: [emerg] unknown directive "ssl" 
- ./configure: error: SSL modules require the OpenSSL library.

安装教程: https://blog.csdn.net/weiyangdong/article/details/80008543

3.2.2 配置流程

  1. 要记得打开服务器443端口!!!!

  2. 添加域名解析(这里以阿里云二级域名为例)

    avatar

  3. 给域名申请SSL证书并下载nginx版

    avatar

    avatar

  4. 登录您的Nginx服务器,在Nginx安装目录(默认Nginx安装目录为/usr/local/nginx/conf)下创建cert目录,并将下载的证书文件和密钥文件拷贝到cert目录中。

    Code
    cd /usr/local/nginx/conf
    sudo mkdir cert
    # 拷贝文件到该目录下
    [X@X /usr/local/nginx/conf/cert]$ll
    total 8
    -rw-rw-r-- 1 wbw wbw 1679 Apr 1 17:49 3697502_cygf.wangbowen.cn.key
    -rw-rw-r-- 1 wbw wbw 3663 Apr 1 17:49 3697502_cygf.wangbowen.cn.pem
  5. 启动一个项目(这里以springboot项目为例,端口为9000)

    Code
    # 后台运行
    $nohup java -jar cygf-web-1.0.1.jar > cygf-web-1.0.1.log 2>&1 &
    [1] 1617
    Code
    # 查看9000端口占用情况,确定项目启动成功
    $netstat -lnpt
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN -
    tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 1617/java
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
    tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN -
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
  6. 修改Nginx安装目录/conf/nginx.conf文件

    # http 80 端口重定向到 http 443 
    server {
    listen 80;
    server_name [::]:80 default_server;
    rewrite ^(.*)$ https://$host$1 permanent;
    }

    # 创意工坊
    server {
    #监听443端口(如果是http那么直接80就可以了)
    listen 443 ssl;
    #对应的域名,把cygf.wangbowen.cn改成你们自己的域名就可以了
    server_name cygf.wangbowen.cn;
    #限制文件上传大小(这个是我自己项目的设置)
    client_max_body_size 10M;

    #这里是SSL才有的,如果是http协议,那么不用写
    #获取到的第一个文件的全路径(腾讯云获取的是crt,阿里云是pem)
    ssl_certificate /usr/local/nginx/conf/cert/3697502_cygf.wangbowen.cn.pem;
    #获取到的第二个文件的全路径
    ssl_certificate_key /usr/local/nginx/conf/cert/3697502_cygf.wangbowen.cn.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_prefer_server_ciphers on;

    #这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
    location / {
    #代理
    proxy_pass http://localhost:9000/;
    #主页文件
    index index.html;
    }

    #解决跨域API请求前缀(这里我的项目用到了跨域,如果没有可以不用加)
    location /api/ {
    proxy_pass http://localhost:9000/;
    #如果有跨域问题加上下面的内容
    #add_header Access-Control-Allow-Origin *;
    #add_header Access-Control-Allow-Methods "POST, GET, OPTIONS";
    #add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
    #add_header Access-Control-Allow-Credentials true;

    }
    }
  7. 刷新配置

    Code
    $sudo ./nginx -s reload
  8. 访问域名

    avatar

文章作者: IT小王
文章链接: https://wangbowen.cn/2020/02/22/Nginx%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT小王

评论