Linux下nginx

Table of Contents

yum安装

配置nginx的yum环境(第一种方式)

  这几天做博客发现CentOS 中没有自己用的nginx 所以就无法直接安装 nginx 了由于 yum 源中没有我们想要的 nginx,那么我们就需要创建一个"etc/yum.repos.d/nginx.repo"的文件,其实就是新增一个 yum 源。

vim /etc/yum.repos.d/nginx.repo

然后将下面的内容复制进去:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

保存"/etc/yum.repos.d/nginx.repo"文件后

yum info nginx

配置nginx的yum环境(第2种方式)

rpm -ivh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.8.1-1.el7.ngx.x86_64.rpm

查看nginx的yum信息

yum info nginx

安装

`yum install nginx`

编译安装

合并安装下面5步

yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

一. gcc 安装

  • 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
yum install -y gcc-c++

二. PCRE pcre-devel 安装

  • PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel

三. zlib 安装

  • zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel

四. OpenSSL 安装

  • OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。

nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

yum install -y openssl openssl-devel

五.nginx 下载

  wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure
make && make install

六.把nginx添加进环境变量中

  echo "export PATH=$PATH:/usr/local/nginx/sbin" >> ~/.bashrc
source ~/.bashrc

七.常用命令

  nginx *启动
nginx -t *测试配置文件nginx.conf正确性
nginx -s quit   *此方式停止步骤是待nginx进程处理任务完毕进行停止。
nginx -s stop   *此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
nginx -s reload *动态加载,当配置文件nginx.conf有变化时执行该命令动态加载。

设置开机启动

在系统服务目录里创建nginx.service文件

`vi /lib/systemd/system/nginx.service` 内容如下

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

说明

[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

常用命令

以xxx配置文件启动
nginx -c /etc/nginx/nginx.conf

systemctl start nginx.service *启动nginx服务

systemctl enable nginx.service *设置开机自启动

systemctl disable nginx.service *停止开机自启动

systemctl status nginx.service *查看服务当前状态

systemctl restart nginx.service *重新启动服务

systemctl list-units --type=service *查看所有已启动的服务

nginx配置https

下载证书

> 到腾讯云或阿里云申请免费证书

[或者使用openssl生成自签名证书](https://www.jianshu.com/p/9523d888cf77)

包括2文件,eg:

  • 1_www.yk001.cn_bundle.crt
  • 2_www.yk001.cn.key
  • `放到/etc/nginx/ssl`路径下

nginx配置

`vi nginx.conf`

增加2个server

  server {
    listen       80;
    server_name  yk001.cn;
    // 80端口转到443端口
    rewrite ^/(.*)$ https://yk001.cn:443/$1 permanent;
    }

    //http节点中可以添加多个server节点
server{
    //监听443端口
    listen 443;
    //对应的域名,把yk001.cn改成你们自己的域名就可以了
    server_name yk001.cn;
    ssl on;
    //从腾讯云获取到的第一个文件的全路径
    ssl_certificate /etc/nginx/ssl/1_www.yk001.cn_bundle.crt;
    //从腾讯云获取到的第二个文件的全路径
    ssl_certificate_key /etc/nginx/ssl/2_www.yk001.cn.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;

    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
    add_header 'Access-Control-Allow-Headers' '*';
    add_header 'Access-Control-Max-Age' 1728000;
    if ($request_method = 'OPTIONS') {
	    return 204;
    }

    ///var/local/h5/web 合起来就是h5地址
    location / {
	    root    /var/local/h5/web;
	    index   index.html;

    }

    location /ruby {
	    proxy_pass http://localhost:3000/;

    }

}

注意

nginx + tomcat

  • 重试时间:默认75s
  • 若后台处理时间超过75s会出发nginx超时重试机制
  • 避免:若有请求需要处理很长时间,可以直接通过tomcat调用,绕过nginx

Date: 2022-05-27 Fri 15:32

Author: yangk

Created: 2023-01-03 Tue 12:43

hello-world