前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在ubuntu系统部署Nginx

在ubuntu系统部署Nginx

原创
作者头像
图难于其易
修改2023-11-17 08:02:27
1.1K0
修改2023-11-17 08:02:27
举报
文章被收录于专栏:读书笔记读书笔记

1 安装nginx

安装信息:

  • 登入终端:

主机:116.xxx.xxx.xx

端口:8123

用户名:root

密码:xxxxxx

  • 最终安装信息:

Nginx版本:1.19.8

Nginx存放目录:/usr/local/nginx

前端存放目录:/home/wyy/ai_html

SSL证书存放目录:/usr/local/nginx/sslkey

1.1 检查是否安装nginx

代码语言:shell
复制
$ ps -ef | grep nginx
root     31450 31429  0 02:04 pts/2    00:00:00 grep --color=auto nginx  

检测到并未安装,下一步开始安装nginx。

1.2 安装nginx

1.1.1 安装依赖库

检查是否安装库命令,例如是否已安装zlib

代码语言:shell
复制
$ dpkg -l | grep zlib

如果已经安装,可以跳过该依赖库的安装。

如果没有安装,则安装以下依赖库:

  • 安装gcc g++的依赖库
代码语言:shell
复制
$ apt-get install build-essential
$ apt-get install libtool
  • 安装pcre依赖库
代码语言:shell
复制
$ apt-get update
$ apt-get install libpcre3 libpcre3-dev
  • 安装zlib依赖库
代码语言:shell
复制
$ apt-get install zlib1g-dev
  • 安装ssl依赖库
代码语言:shell
复制
$ apt-get install openssl libssl-dev
1.1.2 安装nginx

下载安装包:

代码语言:shell
复制
$ wget https://nginx.org/download/nginx-1.19.8.tar.gz

解压:

代码语言:shell
复制
$ tar -zxvf nginx-1.19.8.tar.gz

解压后的文件夹重命名为nginx文件夹:

代码语言:shell
复制
$ mv nginx-1.19.8 nginx

移动文件夹到ubuntu常见软件目录下:

代码语言:shell
复制
$ mv nginx/ /usr/local/

进入目录:

代码语言:shell
复制
$ cd /usr/local/nginx

配置命令:

代码语言:shell
复制
$ ./configure --prefix=/usr/local/nginx --with-http\_gzip\_static\_module --with-http\_v2\_module --with-pcre --with-http\_ssl\_module --conf-path=/usr/local/nginx/conf/nginx.conf

编译:

代码语言:shell
复制
$ make

安装:

代码语言:shell
复制
$ make install

通过软连接,这样就可以直接使用 nginx 执行:

代码语言:shell
复制
$ ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

测试是否安装成功:

代码语言:shell
复制
$ nginx -V
nginx version: nginx/1.19.8
built by gcc 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 
built with OpenSSL 1.1.1  11 Sep 2018
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http\_gzip\_static\_module --with-http\_v2\_module --with-pcre --with-http\_ssl\_module --conf-path=/usr/local/nginx/conf/nginx.conf

安装nginx成功!

2 启动nginx

检查配置信息是否正确:

代码语言:shell
复制
$ nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

以上结果显示,配置信息正常。

P.S. 如果显示如下信息:

代码语言:shell
复制
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)
2016/09/13 19:08:56 [emerg] 6996#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory)

是因为nginx/目录下没有logs文件夹,在/usr/local/nginx/目录执行如下命令可解决:

代码语言:shell
复制
$ mkdir logs
$ chmod 700 logs

再次检测配置:

代码语言:shell
复制
$ nginx -t

如果配置正常,则可以启动nginx:

代码语言:shell
复制
$ nginx

访问端口确认是否成功启动nginx,在本项目中,访问 http://116.xxx.xxx.xx:80/:

Welcome to nginx!
Welcome to nginx!

出现如上结果,则已经成功启动nginx!

3 配置nginx

3.1.上传代码

通过FTP上传项目代码至规定的目录:/home/wyy,本项目中,前端代码存放在/home/wyy/ai_html/目录中。

3.2.配置nginx.conf

进入conf/目录:

代码语言:shell
复制
$ cd /usr/local/nginx/conf

备份默认的nginx.conf为nginx.default.conf:

nginx.conf的内容如下:

代码语言:shell
复制
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    # server {
    #     listen       80;
    #     server_name  localhost;

    #     #charset koi8-r;

    #     #access_log  logs/host.access.log  main;

    #     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;
    #     }
    # }
    include website/*.conf;
}

在当前目录新建website文件夹,然后添加ai.conf,配置本项目:

ai.conf的内容如下,端口为80:

代码语言:shell
复制
server {
  listen 80;
  error_page  404 /index.html;
  client_max_body_size 100m;

  location / {
      root /home/wyy/ai_html; # 前端代码文件位置
      index index.html;
      try_files $uri $uri/ /index.html; # 解决vue刷新404的问题
  }
  location /api/ {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Headers' 'X-Requested-With';
    add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
    add_header 'Cache-Control' 'no-cache';

    if ($request_method = 'OPTIONS') {
        return 200;
    }
    proxy_pass http://127.0.0.1:9999/; # 反向代理
    # rewrite ^/b/(.*)$ /$1 break;
  }

  location /knowledgeApi/ {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Headers' 'X-Requested-With';
    add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
    add_header 'Cache-Control' 'no-cache';

    if ($request_method = 'OPTIONS') {
        return 200;
    }
    proxy_pass http://127.0.0.1:8888/; # 反向代理
    # rewrite ^/b/(.*)$ /$1 break;
  }
}

3.3.启动项目

检查配置是否正常:

代码语言:shell
复制
$ nginx -t

如果正常,则热重载nginx:

代码语言:shell
复制
$ nginx -s reload

刷新http://116.xxx.xxx.xx:80/可以看到配置指定站点。

3.4.配置证书和https

/usr/local/nginx/目录下创建sslkey目录,存放SSl证书:

配置https,修改ai.conf(具体配置需要看云服务器要求):

代码语言:shell
复制
server {
  listen                  443 ssl; # SSL 默认访问端口号为 443
  server_name             127.0.0.1; # 绑定证书的域名
  ssl_certificate         /usr/local/nginx/sslkey/smarthome_server.crt;
  ssl_certificate_key     /usr/local/nginx/sslkey/smarthome_server.key;
  error_page  404 /index.html;
    
  location / {
    # ...
  }
  location /api/ {
    # ...
  }
  location /knowledgeApi/ {
    # ...
  }
}

# HTTP请求自动跳转HTTPS
server {
  listen 80;
  error_page  404 /index.html;
  client_max_body_size 100m;
  return  301 https://$server_name$request_uri; # 把HTTP的域名请求转成HTTPS
}

3.5.启动项目

代码语言:shell
复制
$ nginx -t
$ nginx -s reload

如果网页地址栏出现小锁标志,表示证书已经安装成功。

3.6.防火墙设置

代码语言:shell
复制
$ sudo ufw allow 'Nginx HTTP' # 此配置文件仅打开端口80
$ sudo ufw allow 'Nginx HTTPS' # 此配置文件仅打开端口443

# 输入以下命令以启动防火墙
$ sudo ufw enable   # 开启
$ sudo ufw disable    # 关闭

# 输入以下命令以查看防火墙状态
$ sudo ufw status    # 查看
# inactive状态是防火墙关闭状态 active是开启状态

3.7 配置gzip

代码语言:shell
复制
server{
    gzip on; # 开启gzip
    gzip_buffers 32 4K; # 设置用于处理请求压缩的缓冲区数量和大小,使用默认值即可
    gzip_comp_level 6; # 压缩等级【1-9】,等级越高压得越小,越消耗GPU计算资源
    gzip_min_length 1k; # 当文件大于等于1k时,开始压缩
    gzip_types application/javascript text/css text/xml; # 不应压缩图片、MP3、MP4类型:压缩率小,太费GPU资源
    gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
    gzip_vary on; # 增加响应头”Vary: Accept-Encoding”
    gzip_proxied any; # Nginx做反向代理时,无条件压缩所有结果数据
}

重启nginx后,查看网页文件的响应头信息:

Content-Encoding:gzip 说明开启了gzip压缩;

Transfet-Encoding:chunked 说明压缩后分块传输。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 安装nginx
    • 1.1 检查是否安装nginx
      • 1.2 安装nginx
        • 1.1.1 安装依赖库
        • 1.1.2 安装nginx
    • 2 启动nginx
    • 3 配置nginx
      • 3.1.上传代码
        • 3.2.配置nginx.conf
          • 3.3.启动项目
            • 3.4.配置证书和https
              • 3.5.启动项目
                • 3.6.防火墙设置
                  • 3.7 配置gzip
                  相关产品与服务
                  SSL 证书
                  腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                  http://www.vxiaotou.com