nginx配置

#用户
user  nginx;
#work进程数
worker_processes  1;

#错误日志位置及日志显示最低级别
error_log  /var/log/nginx/error.log warn;
#pid文件
pid        /var/run/nginx.pid;


events {
    #work进程连接数
    worker_connections  1024;
}


http {
    #页面包含的文件类型
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    #优化
    sendfile        on;
    #tcp_nopush     on;

    #长连接超时时间
    keepalive_timeout  65;

    #压缩
    #gzip  on;

    #包含的配置文件
    include /etc/nginx/conf.d/*.conf;

    #虚拟主机
    server {
    #监听端口
    listen       80;
    #域名
    server_name  localhost;
    #字符集
    charset utf-8,gbk;
    #地址定位
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;  
    }
    location /download {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
  }
}

搭建小游戏

1.编辑配置文件

[root@web01 code]# vim /etc/nginx/conf.d/h5game.conf
server {
    listen 80;
    server_name localhost;

    location / {
    root /code;
    index index.html;
    }
}

2.创建目录

[root@web01 ~]# mkdir /code

3.上传代码包

[root@web01 ~]# cd /code/
[root@web01 code]# rz mario.zip
[root@web01 code]# unzip mario.zip
[root@web01 code]# cp -r html/* ./

4.重载nginx

[root@web01 code]# nginx -s reload        注:以什么方式启动的就以什么方式管理
[root@web01 code]# systemctl restart nginx  (建议使用system管理)

5.访问页面

出现游戏

nginx虚拟主机

虚拟主机三种方式

1.方式一、基于主机多IP方式

[root@web01 conf.d]# cat mario.conf 
server {
    listen 10.0.0.7:80;
    server_name _;

    location / {
    root /code;
    index index.html;
    }
}
[root@web01 conf.d]# 


[root@web01 conf.d]# cat yongwanzhiqian.conf 
server {
    listen 172.16.1.7:80;
    server_name _;

    location / {
    root /code1;
    index index.html;
    }
}
[root@web01 conf.d]#

2.方式二、基于端口的配置方式

[root@web01 conf.d]# cat mario.conf 
server {
    listen 80;
    server_name localhost;

    location / {
    root /code;
    index index.html;
    }
}
[root@web01 conf.d]#

[root@web01 conf.d]# cat yongwanzhiqian.conf 
server {
    listen 90;
    server_name localhost;

    location / {
    root /code1;
    index index.html;
    }
}
[root@web01 conf.d]#

3.方式三、基于多个hosts名称方式(多域名方式)

[root@web01 conf.d]# cat mario.conf 
server {
    listen 80;
    server_name www.mario.com;

    location / {
    root /code;
    index index.html;
    }
}
[root@web01 conf.d]# cat yongwanzhiqian.conf 
server {
    listen 80;
    server_name www.ybyq.com;

    location / {
    root /code1;
    index index.html;
    }
}
[root@web01 conf.d]# 


#修改windows的hosts文件
C:\Windows\System32\drivers\etc\hosts
10.0.0.7  www.mario.com   www.ybyq.com

nginx日志实战

[root@web01 conf.d]# cat mario.conf 
server {
    listen 80;
    server_name www.mario.com;
    access_log /var/log/nginx/www.mario.com.log main;

    location / {
    root /code;
    index index.html;
    }
}
[root@web01 conf.d]#

[root@web01 conf.d]# cat yongwanzhiqian.conf 
server {
    listen 80;
    server_name www.ybyq.com;
    access_log /var/log/nginx/www.ybyq.com.log main;

    location / {
    root /code1;
    index index.html;
    }
}
[root@web01 conf.d]# 

#重载
[root@web01 conf.d]# systemctl restart nginx

[root@web01 conf.d]# ll /var/log/nginx/
total 164
-rw-r----- 1 nginx adm  139520 Dec 11 10:04 access.log
-rw-r----- 1 nginx adm     560 Dec 10 14:44 access.log-20191211
-rw-r----- 1 nginx adm    8720 Dec 11 10:04 error.log
-rw-r--r-- 1 root  root   5930 Dec 11 10:04 www.mario.com.log
-rw-r--r-- 1 root  root      0 Dec 11 10:06 www.ybyq.com.log
[root@web01 conf.d]#

nginx日志

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

$remote_addr        # 记录客户端IP地址
$remote_user        # 记录客户端用户名
$time_local         # 记录通用的本地时间
$time_iso8601       # 记录ISO8601标准格式下的本地时间
$request            # 记录请求的方法以及请求的http协议
$status             # 记录请求状态码(用于定位错误信息)
$body_bytes_sent    # 发送给客户端的资源字节数,不包括响应头的大小
$bytes_sent         # 发送给客户端的总字节数
$msec               # 日志写入时间。单位为秒,精度是毫秒。
$http_referer       # 记录从哪个页面链接访问过来的
$http_user_agent    # 记录客户端浏览器相关信息
$http_x_forwarded_for #记录客户端IP地址
$request_length     # 请求的长度(包括请求行, 请求头和请求正文)。
$request_time       # 请求花费的时间,单位为秒,精度毫秒
# 注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客 户端真实的IP地址。
# $remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,
# 增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址。

nginx 日志定时切割

[root@web01 conf.d]# cat /etc/logrotate.d/nginx 
#nginx日志路径
/var/log/nginx/*.log {
        #每天备份
        daily
        #忽略丢失日志
        missingok
        #日志保存时间
        rotate 52
        #压缩
        compress
        #延时压缩
        delaycompress
        #忽略空文件
        notifempty
        #备份文件权限   读写权限为 640  属主(nginx)属组(adm)
        create 640 nginx adm
        #开始脚本标记
        sharedscripts
        #脚本内容
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        #结束脚本标记
        endscript
}

nginx升级或添加模块

#原来是1.16.1版本,现在要升级为1.17.6

#1.上传新版本包
[root@web02 ~]# wget http://nginx.org/download/nginx-1.17.6.tar.gz
[root@web02 ~]# rz nginx-1.17.6.tar.gz

#2.解压代码包
[root@web02 ~]# tar xf nginx-1.17.6.tar.gz 

#3.安装依赖
[root@web02 ~]# yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake wget httpd-tools vim tree openssl openssl-devel zlib-devel

#4.生成文件
[root@web02 nginx-1.17.6]# ./configure --prefix=/usr/local/nginx-1.17.6 --user=www --group=www --with-http_addition_module --with-http_auth_request_module --with-http_ssl_module 

#5.编译安装
[root@web02 nginx-1.17.6]# make && make install

#6.软链接重新指向
[root@web02 ~]# cd /usr/local/
[root@web02 ~]# rm -rf nginx && ln -s nginx-1.17.6 nginx

#7.移动pid文件
[root@web02 local]# mv /usr/local/nginx-1.16.1/logs/nginx.pid /usr/local/nginx-1.17.6/logs/

#8.重载nginx
[root@web02 local]# /usr/local/nginx/sbin/nginx -s reload

nginx 模块

1.目录索引模块(ngx_http_autoindex_module)

Syntax:    autoindex on | off;
Default:    autoindex off;
Context:    http, server, location

# autoindex常用参数
autoindex_exact_size off;
默认为on, 显示出文件的确切大小,单位是bytes。
修改为off,显示出文件的大概大小,单位是kB或者MB或者GB。

autoindex_localtime on;
默认为off,显示的文件时间为GMT时间。
修改为on, 显示的文件时间为文件的服务器时间。

charset utf-8,gbk;
默认中文目录乱码,添加上解决乱码。
[root@web01 download]# cat /etc/nginx/conf.d/mario.conf 
server {
    listen 80;
    server_name www.mario.com;
    access_log /var/log/nginx/www.mario.com.log main;
    charset utf-8,gbk;

    location / {
    root /code;
    index index.html;
    }

    location /download {
    root /code;
    autoindex on;
    autoindex_exact_size off;
    autoindex_localtime on;
    }
}
Copyright © 高程程 all right reserved,powered by Gitbook修订于: 2021-05-18 21:14:36

results matching ""

    No results matching ""