Liunx之nginx配置

一、nginx 安装#

卸载 yum 安装的 ngjnx

1
yum remove nginx -y

编译安装 nginx 步骤

编译安装 nginx 的步骤
1. 解决软件依赖
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel
 openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
 gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

2. 下载 nginx 的源代码包, 这里用的淘宝的 tengine
wget http:
//tengine.taobao.org/download/tengine-2.3.1.tar.gz

3. 解压缩 tnginx 包
tar
-zxvf tengine-2.3.1.tar.gz

4. 进入源码目录, 开始编译三部曲
.
/configure --prefix=/opt/tngx231/
make
&& make install

5. 可以使用了
发现缺少 sqllite 这个一个软件依赖包, 就得直接删除编译好的软件, 重新编译即可

6. 进入安装好的 tngx321 目录, 查看有哪些东西
conf 存放 nginx 的配置文件
html 存放前端文件的
logs 存放 nginx 的日志文件

进入 sbin 启动 nginx
./nginx

7. 配置 path 变量, 可以快捷使用 nginx 命令
vim
/etc/profile
PATH
='/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tngx231/sbin'

8. 查看 nginx 的首页文件 index.html

二、nginx 配置#

nginx 的功能性学习, 所有的功能都是通过 nginx.conf 配置文件定义的

修改配置参数, 就实现了不同的功能

1、使用 nginx 配置一个站点, 进行访问, 例如 index.html 

vim /html/index.html

2、nginx.conf 中的配置

【虚拟主机站点功能】

server {
        # 监听端口
        listen       85;
        # 域名可以有多个用空格隔开
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
        #网站的路径匹配, 如同 django 的 urls 匹配, 对用户的访问 url 进行路径分配
        #当请求 url 长这样时:
        # 192.168.16.142:85/  就走如下 location 配置        
        location / {
            #deny  192.168.16.0/24;
            #root 参数是定义网页根目录的, 可以修改
            root   /opt/html;
            #index 定义网页首页名字的
            index  index.html index.htm;
        }
        #当用户请求 url 是 192.168.16.142:85/pic/monkeyKing.jpg
        location /pic  {
            #通过 alias 别名参数, 去这个路径下找
            alias   /opt/pic/;
        }
        # 404 页面
        error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
    }

【日志功能】

找到 nginx.conf 中的 http{} 代码块, 然后, 找到里面的如下配置

#日志格式设定
        #$remote_addr 与 $http_x_forwarded_for 用以记录客户端的 ip 地址;
        #$remote_user:用来记录客户端用户名称;
        #$time_local: 用来记录访问时间与时区;
        #$request: 用来记录请求的 url 与 http 协议;
        #$status: 用来记录请求状态;成功是 200,
        #$body_bytes_sent :记录发送给客户端文件主体内容大小;
        #$http_referer:用来记录从那个页面链接访问过来的;
        #$http_user_agent:记录客户浏览器的相关信息;
        #通常 web 服务器放在反向代理的后面,这样就不能获取到客户的 IP 地址了,通过 $remote_add 拿到的 IP 地址是反向代理服务器的 iP 地址。
     反向代理服务器在转发请求的 http 头信息中,可以增加 x_forwarded_for 信息,用以记录原有客户端的 IP 地址和原来客户端的请求的服务器地址。
log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';

所有的日志信息和错误信息都在 logs 文件夹下:

access.log 日志信息:

error.log 错误日志:

nginx.pid 当前 nginx 运行的进程 id:

【禁止访问】

在 nginx.conf 中, 找到如下参数, 修改

 

location / {
     #拒绝访问,192.168.16.0 网段的同学都无法访问  /24 是子网掩码的意思
    deny  192.168.16.0/24;
    root   html;
    index  index.html index.htm;
}

 

【修改虚拟主机的家目录】

虚拟主机就是 nginx.conf 中 server{} 标签定义的代码
网站的路径匹配, 如同 django 的 urls 匹配, 对用户的访问 url 进行路径分配

#当请求 url 长这样时:
# 192.168.16.142:85/  就走如下 location 配置        
location / {
            #deny  192.168.16.0/24;
            #root 参数是定义网页根目录的, 可以修改
            root   /opt/html;
            #index 定义网页首页名字的
            index  index.html index.htm;
        }
#当用户请求 url 是 192.168.16.142:85/pic/monkeyKing.jpg
location /pic  {
        #通过 alias 别名参数, 去这个路径下找
        alias   /opt/pic/;
}

location /media {
alias
/opt/media;
}

【404 页面】

-nginx 的 404 页面, 在 nginx.conf 中, 找到一个 error_page 参数
    #当请求错误码是 404 时, 就返回一个 404.html 给用户查看, 并且这个文件在网页根目录下
    error_page  404              /404.html;

【虚拟主机功能】

一个 nginx 下运行多个网址

# 找到 nginx 安装目录下的 conf 文件夹, 找到 nginx.conf
# 通过编写多个 server 标签实现多虚拟主机
# nginx.conf 配置如下:
    # 虚拟主机 1:
    server {
        # 监听的端口
        listen       80;
        #这里进行域名匹配
        server_name  www.s20hanju.tv;
        #这里进行路径匹配
        location / {
            #root 定义网页根目录
            root   /opt/s20/hanju;
            #index 定义网站首页文件名
            index  index.html;
        }
    }
    # 虚拟主机 2:
    server {
        listen  81;
        server_name www.s20lol.tv;
        location / {
                root /opt/s20/lol;
                index index.html;
        }
    }

# 改完 nginx.conf 的配置, 需要重启 nginx -s reload

# 分别准备 hanju 和 lol 的数据文件夹

# 然后再去 windows 中准备 hosts 文件, 进行域名解析
#
文件绝对路径
#
C:\Windows\System32\drivers\etc\hosts
#
内容如下:
192.168.16.142 www.s20hanju.tv
192.168.16.142 www.s20lol.tv

# 最后在 windows 中进行访问, 分别访问 lol 和 hanju 的网址内容

域名解析是先从本地的 host 文件中开始找, 如果找不到会去 dns 找;
3、nginx 的启停命令

直接输入 nginx  是启动 
nginx -s stop  停止
nginx -s reload  平滑加载, 不重启 nginx, 重新读取配置文件, 生效  

4、liunx 的压测命令

1. 安装 ab 命令
yum -y install httpd-tools 
2. 使用 ab 压测命令
    -n requests #执行的请求数,即一共发起多少请求。
-c concurrency <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">请求并发数。</span>

-k <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。</span>

  # 进行压测命令, 统计网站请求数
ab -kc 1000 -n 100000 http://192.168.16.142/

5、nginx 状态模块

找到 nginx.conf 然后再找到一个虚拟主机 server 标签, 添加如下配置即可

location /status {
        
#开启 nginx 状态功能
stub_status on;
}