Nginx使用方法

Nginx是按照模块来使用的

nginx下载地址

官网:nginx.com

日志管理

日志类型:

1、access.log 访问日志

查看和统计用户的访问信息流量

2、error.log错误日志 错误信息 重写信息

官方文档: http://nginx.org/en/docs/http/ngx_http_log_module.html

查看access.log
cd /usr/lcoal/nginx/logs
cat access.log

access.log日志文件内容示例

127.0.0.1 - - [86/0ct/2023:11:46∶16 +0800]“GET /phpinfo.php HTTP/1.1" 200 25206 "-"“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko )chrome/62.0.3282. 9 Safari/537.36”

duplicate tab 重复的选项卡

secureCRT可以开启重复的页面

查看访问日志相关参数

vim nginx.conf

#定义日志格式   格式命名    详细格式参数
#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 ;
查看error.log
cat /usr/local/nginx/logs/error.log
#定义开启错误日志    日志位置    日志级别
#error_log    logs/error.log; 
#error_log    logs/error.log     notice;
#error_log    logs/error.log     info;

官方文档: http://nginx.org/en/docs/ngx_core_module.html#error_log

错误日志内容示例:

2023/9/8 11:42:43[error ] 25356#0: *38 open() "/usr/local/nginx/html/favicon.ico" failed(2: No such file or directory), client: 192.168.17.1,server: localhost,request: "GET

/favicon.ico HTTP/1.1", host: “192.168.17.220",referrer: “http://192.168.17.220/index.php

时间是2023/9/8 11:42:43,日志级别是[error ] ,详细的错误详细是没有/usr/local/nginx/html/favicon.ico这个目录,客户端是192.168.17.1,访问的服务是 localhost,请求方式是get,主机是192.168.17.220,错误来源是http://192.168.17.220/index.php

基于域名的Nginx日志分割

设置日志的定义规则

#定义日志格式     定义到http里
log_format mylogs '$remote_addr - $remote_user [$time_local] "$request"'
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" ';
在server里面定义
access.log logs/shop.lnmp.com_access.log mylogs;

配置完成后测试语法是否错误

service nginx configtest

一个域名一个日志方便管理

nginx的重装和升级
kill信号参数和语法

TERM,INT(快速退出,当前的请求不执行完成就退出)-s stop

QUIT(优雅退出,执行完当前的请求后退出)-s quit

HUP(重新加载配置文件,用新的配置文件启动新worker进程,并优雅的关闭旧的worker进程)

-s reload

USR1(重新打开日志文件)-s reopen

USR2(平滑的升级nginx二进制文件 拉起一个新的主进程 旧主进程不停止)

WINCH(优雅的关闭worker进程)

注意:以上信号参数都必须发送给master进程


kill语法格式

kill 选项参数 pid(进程id)

#关闭nginx

#快速关闭

kill -INT pid

#优雅关闭

kill -QUIT pid

重新安装nginx

①停止掉服务,删除编译的安装的软件包和源码包②重新解压编译安装即可

注意:如果有需要,请备份配置文件和网站目录里的资源文件

如果直接把旧版本的服务停止掉,会影响线上业务的使用

最佳解决办法:

旧的和新的同时提供服务,旧的请求完成之后,就停掉旧进程

-USR2平滑启动一个进程(平滑升级)

-WINCH优雅的关闭子进程

-QUIT优雅关闭主进程

  1. 通过远程管理工具上传新的nginx安装包

  1. 解压之后先查看旧的nginx版本和配置信息

tar xvf nginx-1.16.0.tar.gz
cd /nginx-1.16.0

编译完成后,make && make install

新旧版本都在,必须用平滑升级信号

kill -USER2 pid  //一定要是旧版本的主进程pid

平滑升级之后如果新版本的nginx请求不报错,就把旧版本的关掉

kill -WINCH pid  //旧版本的主进程pid,优雅的关闭子进程
kill -QUIT pid   //优雅的关闭主进程
升级upgrade
升级其实就是利用安装包里面的升级配置文件Makefile在编译之后
make install && make upgrade   //完成nginx升级,和重装其实是一样的原理

升级完成之后可以在网页端查看版本

nginx的配置文件及介绍

配置文件在/usr/local/nginx/nginx.conf

vim nginx.conf

#nginx子进程启动用户,我之前的教程设置的是www
#user nobody;
user 必须得有这个用户才行(用户名)
#子进程数量一般调整为cpu核数或者倍数,pv=子进程的连接数乘以子进程数
worker_processes 1;
#错误日志定义
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程pid存储文件
#pid    logs/nginx.pid;
#响应事件events
events {
    #每个子进程的连接数    nginx当前并发量=worker_processes*worker_connections
    worker_connections 1024;
}

#http协议段
http {
#引入  文件扩展名和与文件类型映射表
include    mime.types;
#默认文件类型
default_type application/octet-stream;
#访问日志access.log的格式
#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;
#linux内核提供文件读写的机制
sendfile       on;
#tcp_nopush    on;


#keepalive_timeout 0;
#连接超时时间 单位为s 
keepalive_timeout 65;
#gzip压缩
#gzip on;
#server虚拟主机的配置
server {
#监听端口
listen    80;
#域名可以有多个 用空格分隔
server_name localhost;
#默认编码
#charset koi8-r;
#access_log logs/host.access.log main;
#location用来匹配url
location / {
#默认访问的网站路径
root html;
#默认访问页面从前往后的顺序查找
index index.html index.htm;
}

#error_page 404    /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 508 502 583 584 /50x.html;
location = / 50x.html {
root html;
}
location ~ \.php$ {
#root     html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index   index.php;
fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
include    fastcgi_params;
}
}
}
基于域名的server虚拟主机配置

第一步:建立网站域名访问目录

第二步:解析域名并绑定主机(如果有dns服务器忽略)

当前客户端是通过windows的浏览器,需要在win下的hosts文件(C:Windows\System32\drivers\etc)进行解析域名(绑定主机和主机的ip)

第三步:nginx配置文件绑定域名

server {
#监听端口
listen 80;
#绑定域名
server_name shop.lnmp.com;
#网站目录
root html/tp5shop;
#默认访问页面
index index.html;

#如果不加下面的location的话nginx无法解析以php结尾的文件
location ~ \.php$ {
fastcgi_pass  127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include       fastcgi_params;
    }
}
基于端口的server虚拟主机配置

这个就是修改listen,一般用于内网ip:端口号

基于ip的server虚拟主机的配置

这个和端口配置一样,只会用于内网业务。

第一步:添加一个临时ip

ifconfig eth0:1 192.168.1.1  //临时添加的iP
ip a  //查看ip

第二步:添加nginx配置

server {
    listen 80;
    server_name 192.168.1.1;
    root html/ip;
}

第三步:创建ip测试目录

cd /usr/local/nginx/html
如果在nginx.conf目录可以cd ../html/   //返回上一级
mkdir ip  //创建ip测试目录
echo "ip test" >> ./ip/index.html  //echo ' '单引号只能解析一个单个字符
nginx上线商城项目

第一步:上传项目文件到服务器

cd /usr/lcoal/nginx/html  //上传位置
mv tp5shop tp5shop_bak    //备份旧的项目文件
unzip tp5shop.zip    //解压.zip压缩包

第二步:根据开发手册部署虚拟主机server

虚拟机的生产环境必须和开发环境一样

一般应用入口文件位置都在public/index.php

nginx服务默认访问index.html

没有index.html就会列出目录列表结构 没有权限列出 所以就会报403,所以必须加上index.php

域名访问之后报错是因为数据库文件没有迁移,所以没有权限无法access访问

vim /usr/local/nginx/conf/nginx.conf    //编辑配置文件
在server段配置项目文件位置(前端配置在public是为了安全)
配置文件修改完之后一定要reload

解析域名:windows可以绑定主机和域名 win+R 输入drivers 修改etc下的hosts

第三步:创建数据库,导入数据库迁移文件

#创建数据库
mysql > create database tp5shop;
#使用数据库
mysql > use tp5shop;
#通过sql文件导入恢复数据
mysql > source /usr/local/nginx/html/tpshop.sql

配置项目连接数据库

修改项目的连接数据库配置文件

vim /usr/local/nginx/html/tp5shop/application/database.php

分析:

nginx读取静态文件用户www

php-fpm 读取、写入、解析php文件用户www应该把runtirme目录的所属关系赋予www

cd /usr/local/nginx/html/tp5shop //切换到项目文件目录
chown -R WWW:WWW /runtime    //修改runtime目录的拥有者和所属组(同时也是php的用户)

php是动态脚本,会自动加载配置文件,不需要重启服务

nginx实现gzip压缩文件
#配置到http段里,使整个http服务都启用gzip压缩
#开启gzip压缩
gzip on;
#http协议版本
gzip_http_version 1.0;
#IE浏览器不开启 gzipIE6以下会乱码
gzip_disable "MSIE [1-6]. ';
#开启gzip文件的格式,可以根据项目添加压缩的格式
gzip_types image/jpeg image/jpg image/png text/plain text/css;

客户端缓存设置

B/S架构里browser浏览器就是客户端

告知浏览器获取的信息是在某个时间段是有效的。

示例语法:
location ~ \.(js|css)${
#单位参数d day天|H hour 小时
    expires 1h;
}


#配置到http,对整个http都生效
expires 1h;
基于ip的访问控制

deny ip //禁止ip访问

allow ip //运行ip访问

禁止之后该主机就不能进入浏览器访问网页了

基于用户的访问控制

配置实现:

①创建用户名和密码存储文件

cd /usr / local/nginx /conf

#htpasswd如果不存在就通过

yum -y install httpd-tools(图片上写错了)

#生成用户名称和密码

htpasswd-c ./passwd.b lnmp

#输入密码并再次确认密码

查看passwd .db文件是否创建成功

配置文件内容

#根据业务需求,配置到server段里

#登录框显示的标题提示auth_basic "shop login";

#加载用户名称和密码校验文件

auth_basic_user_file /user /local/nginx/conf/passwd . db;

测试访问,访问页面都需要用户名和 密码

网页名称是shop login

目录列表的显示设置

第一步:进入nginx.conf配置文件在server段里面设置列目录权限

autoindex on;

第二步:默认访问的是index.html,必须把index.html去掉。

可以在配置的列目录权限下面加一个找不到的默认访问index.aaa

#开启目录列表显示
autoindex on;
#index默认找不到时,才会使用目录列表
index index;
注意:如果目录中没有配置的默认index访问项,而autoindex又没有开启,
不能查看访问目录列表,就会报出403错误。
简单说就是可以往目录里面丢资源然后设置成访问下载的目录列表
配置反向代理

LNMPA的优势

Nginx是一个小巧而高效的LInux下的Web服务器软件,与Apache相比,消耗资源更少,支持的并发连接,更高的效率,反向代理功能效率高、静态文件处理快等,但动态页面处理能力不如Apache成熟。单独使用Nginx处理大量动态页面时容易产生频繁的502错误。

Apache足一款老牌的Web服务器软件,在高并发时对队列的处理比FastcGl更成熟,Apache的mod_php效率比php-cgi更高且更稳定、对伪静态支持好,不需要转换、多用户多站点权限等方面有着更好的效果,单独使用Apache处理静态页面时,对内存的占用远远超过Nginx。

LNMPA的优势

LNMPA使用Nginx作为前端服务器,能够更快、更及时地使用更少的系统资源处理静态页面、js、图片等文件,当客户端请求访问动态页面时,由Nginx反向代理给作为后端服务器的Apache处理,Apache处理完再交予Nginx返回给客户端。

采用LNMPA能够更好的解决LNMP架构中由于PHP-FPM方面产生的502错误,同时能以很简单的方式提供更安全的多用户多站点环境

正向代理就是,例如我们访问谷歌浏览,用户是知道运营商代理了访问

反向代理的话,用户是不可能知道后面的代理过程的。

①安装httpd需改端口8080
#安装apache
yum install -y httpd
#配置apache的配置文件
vim letc/httpd/conf/httpd.conf

端口默认是80

修改配置项
listen 8080
配置nginx的server并进行转发
location / {
    proxy_pass http: //127.0.0.1:8080;|
}

因为没有搭建好完整的LNMPA架构,所以访问到的是Apache的报错页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值