Nginx 安装与配置

Nginx 1.16.1安装

下载地址(下载 nginx-1.16.1.tar.gz)

https://nginx.org/en/download.html

配置yum基础依赖

# c++ 环境
yum install gcc-c++

#正则表达式库
yum install -y pcre pcre-devel

#在线压缩文件
yum install -y zlib zlib-devel

#ssl连接使用
yum install -y opensll openssl-devel

安装步骤


#解压 .tar.gz 后缀压缩包
tar -zxvf nginx-1.16.1.tar.gz


#创建临时目录(不创建的话,后续启动的时候会报错)
mkdir /var/temp/nginx -p


# --prefix 安装后的目录签章
# error-log-path 错误日志输入路径
# http-log-path 日志输出路径
#进入解压后的  nginx-1.16.1 目录下执行,执行后会在当前目录下出现一个 Makefile 文件
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

#这两句是添加https相关的模块,如果nginx需要使用到那将这两句追加在最后面即可,下方有样例
#--with-http_stub_status_module \
#--with-http_ssl_module

#./configure \
#--prefix=/usr/local/nginx \
#--pid-path=/var/run/nginx/nginx.pid \
#--lock-path=/var/lock/nginx.lock \
#--error-log-path=/var/log/nginx/error.log \
#--http-log-path=/var/log/nginx/access.log \
#--with-http_gzip_static_module \
#--http-client-body-temp-path=/var/temp/nginx/client \
#--http-proxy-temp-path=/var/temp/nginx/proxy \
#--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
#--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
#--http-scgi-temp-path=/var/temp/nginx/scgi \
#--with-http_stub_status_module \
#--with-http_ssl_module

# 编辑
make

#安装(安装后,相关配置和命令会在 /usr/local/nginx 目录下)
make install

启动

# /usr/local/nginx/sbin 启动执行文件在此路径下
./nginx 


# 启动后,需要访问的话,可以直接关闭防火墙,或者只开启80端口(可选)
#关闭防火墙
systemctl stop firewalld


#开启80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重新加载防火墙
firewall-cmd --reload
#查询80端口是否开启
firewall-cmd --zone=public --query-port=80/tcp

访问对应地址,看到此页面即表示启动成功

在这里插入图片描述

nginx配置说明

基础配置

#设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限(默认为 nobody 用户)
#user  nobody;

#worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行
worker_processes  1;

#设置nginx进程 pid
#pid        logs/nginx.pid;

# 设置工作模式
events {
    #使用的哪种事件驱动(linux默认为epoll)
    use epoll;
    #单个worker进程可以接收的连接数
    worker_connections  1024;
}


#http 是指令块,针对http网络传输的一些指令配置
http {
    #include 引入外部配置,提高可读性,避免单个配置文件过大
    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使用高效文件传输,提升传输性能。启用后才能使用tcp_nopush 是指当数据表累积一定大小后才发送,提高了效率
    sendfile        on;
    tcp_nopush     on;
    
    #设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗。(nginx处理的每个请求均有相应的超时设置。如果做好这些超时时间的限定,判定超时后资源被释放,用来处理其他的请求,以此提升 Nginx 的性能。)
    keepalive_timeout  65;


    #虚拟主机(可配置多个)
    server {
        # 监听的端口号
        listen       80;
        # 虚拟主机名称
        server_name  localhost;

        #对应端口号后的规则(/ 默认直接监听80端口,无后缀)
        location / {
            # 根路径
            root   html;
            # 访问根路径下对应的问题
            index  immoc.html index.htm;
        }
    }
}

location的解析规则
# 默认匹配
location / {
  root /home
}


# = 精确匹配
location = /home/img/facel.png {
  root /home
}

# ~*: 匹配正则表达式,不区分大小写
# 符合图片的显示
location ~ \.(GIF|jpg) {
  root /home
}

# ~:匹配正则表达式,区分大小写
location ~ \.(gif|jpg|jpeg) {
	root /home
}


# ^~:以某个字符路径开头
location ^~ /home/img {
	root /home
}
跨域配置
server {
        #允许跨域请求的域,* 代表所有
        add_header 'Access-Control-Allow-Origin' *;
        #允许请求的header
        add_header 'Access-Control-Allow-Headers' *;
        #允许带上cookie请求
        add_header 'Access-Control-Allow-Credentials' 'true';
        #允许请求的方法,比如 GET,POST,PUT,DELETE
        add_header 'Access-Control-Allow-Methods' *;

        listen       81;
        server_name  localhost;

        #静态资源路径(访问 localhost:81/w)
        location /w {
            #映射别名(全路径)
            alias /opt/soft/center/imooc;
        }
    }

~  
文件压缩配置
http {
    #是否开启实时文件压缩
    gzip  on;
    #限制最小压缩,小于256字节的文件不会压缩
    gzip_min_length 1;
    #定义压缩的级别
    gzip_comp_level 3;
    #定义压缩的文件类型
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon image/jpeg image/gif image/png;
}
防盗链设置
server {
        # 防盗链配置
        # 对源站点验证
        valid_referers 127.0.0.1;
        #非法站点引用会进入下方判断
        if ($invalid_referer) {
            return 404;
        }

        listen       91;
        server_name  localhost;

        location /imooc {
            #拼接路径(imooc将会拼接到center后面)
            root   /opt/soft/center;
        }

    }
负载均衡
  # ip_hash: 每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个ip会固定访问一个后端服务器,前提是用户ip没有发生更改
   # url_hash: 根据每次请求的url地址,hash后访问到固定的服务器节点
   # weight 权重,不加默认为1,可设置
   # max_conns: 限制每台server的最大连接数量
   # slow_start: 缓慢的开始,配置后权重会慢慢从0升级,必须有权重,必须有集群(商业版才有,需要付费) 
   # down: 用于标记服务节点不可用
   # backup: 表示当前服务器节点是备用机,只有在其他的服务器都宕机以后,自己才会加入到集群中,被用户访问到
   # max_fails: 表示失败几次,则标记server已宕机,剔出上游服务,fail_timeout: 表示失败的重试时间
   #upstream模块(默认轮询)
    upstream tomcats {
        # ip_hash;
        # hash $request_uri;
        # server localhost:8090 weight=2;
        # server localhost:8080 max_conns=2;
        # server localhost:8080 slow_start=60s;
        # server localhost:8080 down;
        # server localhost:8080 backup;
        # server localhost:8080 max_fails=2 fail_timeout=15s;
        
        server localhost:8080;
        server localhost:8088;
    }

    server {
        listen       85;
        server_name  localhost;

        location / {
            # 访问 tomcats 模块,会自动对内部的server进行轮询
            proxy_pass http://tomcats;
        }

    }  
Keepalived(长连接)提高吞吐量
    upstream tomcats {
        server localhost:8080;
        server localhost:8088;
        #keepalive 设置长连接处理的数量
        keepalive 32;
    }


    server {
        listen       85;
        server_name  localhost;
        location / {
            proxy_pass http://tomcats;
            # 设置长连接http版本为1.1
            proxy_http_version 1.1;
            # 清除connection header 信息
            proxy_set_header Connection "";
        }

    }     
nginx的缓存
  • 浏览器缓存: 加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地
server {
        listen       92;
        server_name  localhost;

        #静态资源路径
        location /file {
            #映射别名(全路径)
            alias /opt/soft/center/imooc;
            
            # expires表示过期时间,
            #expires @22h30m; #今晚22点30分过期
            #expires -1; -1 不缓存
            # 最大过期时间
            #expires max;
        }
}
  • Nginx缓存
    • 缓存在nginx端,提升所有访问到nginx这一端的用户
    • 提升访问上游(upstream)服务器的速度
    • 用户访问仍然会产生请求流量

#设置缓存目录
proxy_cache_path /usr/local/nginx/upsteam_cache
#共享内存以及占用空间大小
keys_zone=mycache:5m
#设置缓存大小
max_size=1g
#缓存存在时间(超过此时间则被清理)
inactive=30s
#临时目录,使用后会影响nginx性能
use_temp_path=off;

    server {
        listen       85;
        server_name  localhost;

        #开启并使用缓存
        proxy_cache mycache;
        #针对200,304状态码设置缓存时间
        proxy_cache_valid 200 304 8h;
        
        location / {
             alias /opt/soft/center/imooc;
        }

    }

其它操作

按照时间(每分钟)分隔nginx日志(sh脚本)
#!/bin/bash

LOG_PATH="/var/log/nginx"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid

mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log

#向Nginx.主进程发送信号,用于重新打开日志文件
echo $PID
kill -USR1 `cat` $PID

# 使用定时任务进行辅助
# yum install crontabs
# */1 * * * * /usr/local/nginx/sbin/cut_my_log.sh 
# service crond restart
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值