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;
}
}