nginx的源码编译
[root@nginx-model ~]# wget https://nginx.org/download/nginx-1.24.0.tar.gz
解压
tar zxf nginx-1.24.0.tar.gz
[root@nginx-node1 nginx-1.24.0]# dnf install gcc -y
[root@nginx-node1 nginx-1.24.0]# ./configure --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_ssl_module \
> --with-http_v2_module \
> --with-http_realip_module \
> --with-http_gzip_static_module \
> --with-http_stub_status_module \
> --with-pcre \
> --with-stream \
> --with-stream_ssl_module
出现error
[root@nginx-node1 nginx-1.24.0]# dnf search pcre
[root@nginx-node1 nginx-1.24.0]# dnf install pcre-devel.x86_64 -y
[root@nginx-node1 nginx-1.24.0]# dnf search openssl
[root@nginx-node1 nginx-1.24.0]# dnf install openssl-devel.x86_64 -y
[root@nginx-node1 nginx-1.24.0]# dnf install zlib-devel -y
再次编译
ok
关闭debug功能
[root@nginx-node1 nginx-1.24.0]# make && make install
开始和停止的代码
把nginx软件的命令执行路陷进添加到环境变量中
[root@nginx-node1 conf]# dnf list nginx
nginx平滑审计以及版本回滚
Wget+地址
Xshell,用xftp传输echo-nginx-module-0.63.tar.gz
解压
编译
因为之前做过,因此只需要make
备份
[root@nginx-node1 sbin]# cp nginx nginx.old
覆盖
[root@nginx-node1 sbin]# \cp -f /root/nginx-1.26.2/objs/nginx /usr/local/nginx/sbin
[root@nginx-node1 sbin]# ll
写个死循环
新的worker
curl 查看是否更新
激活old,回收新的
curl查看
关掉旧的
nginx命令的常用参数
查看配置
[root@nginx-node1 sbin]# nginx -v
检测配置文件语法
[root@nginx-node1 sbin]# nginx -t
[root@nginx-node1 sbin]# systemctl daemon-reload
[root@nginx-node1 sbin]# ps aux | grep nginx
nginx全局配置参数优化调整
vim /usr/local/nginx/conf/nginx.conf
查看打开文件最大数量
修改打开文件最大数
进入[root@nginx-node1 ~]# vim /usr/local/nginx/conf/nginx.conf
[root@nginx-node1 ~]# vim /usr/local/nginx/conf/nginx.conf
[root@nginx-node1 ~]# nginx -s reload
nginx配置中的root和alias
进入[root@nginx-node1 ~]# vim /usr/local/nginx/conf/nginx.conf
写新的栈点,子配置文件
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhost.conf
[root@nginx-node1 ~]# mkdir -p /data/web/html
[root@nginx-node1 ~]# echo www.timinglee.org > /data/web/html/index.html
server{
listen 80;
server_name www.timinglee.org;
root /data/web/html;
index index.html;
}
刷新
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhost.conf
[root@nginx-node1 ~]# mkdir /data/web/test1 -p
[root@nginx-node1 ~]# mkdir /data/web/test1 > /data/web/test1/index.html
nginx-location用法
[root@nginx-node1 ~]# mkdir /data/web/test -p
[root@nginx-node1 ~]# echo test page > /data/web/test/index.html
[root@nginx-node1 ~]# nginx -s reload
访问
可以访问
测试两者优先级
不加等号的优先级高
nginx下的用户认证
创建日志文件
[root@nginx-node1 ~]# htpasswd -cm /usr/local/nginx/.hrpasswd admin
[root@nginx-node1 ~]# htpasswd -m /usr/local/nginx/.htpasswd lee
[root@nginx-node1 ~]# mkdir /data/web/lee
[root@nginx-node1 ~]# echo lee > /data/web/lee/index.html
编辑文件
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhost.conf
location /lee {
root /data/web;
}
可以登录
添加用户认证
location /lee {
root /data/web;
auth_basic "login password !!";
auth_basic_user_file "/usr/local/nginx/.htpasswd";
}
[root@nginx-node1 ~]# nginx -s reload
登录访问
nginx-自定义日志
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhost.con
error_page 404 /40x.html;
error_log /var/log/timinglee.org/error.log
access_log /var/log/timinglee.org/access.log
建文件
刷新
访问
错误访问
查看日志
nginx中的文件检测
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhost.conf
try_files $uri $uri.html $uri/index.html /error/default.html;
[root@nginx-node1 ~]# nginx -s reload
nginx中的长链接管理
安装telnet,长链接测试工具
[root@nginx-node1 ~]# dnf install telnet -y
[root@nginx-node1 ~]# vim /usr/local/nginx/conf/nginx.conf
keepalive_timeout 65;
keepalive_requests 2;
测试
nginx-下载服务器的设定及优化
创建目录
[root@nginx-node1 ~]# mkdir /data/web/download
[root@nginx-node1 ~]# dd if=/dev/zero of=/data/web/download/leefile bs=1M count=100
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhost.conf
location /download {
root /data/web;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
limit_rate 1024k;
}
测试
nginx的数据压缩功能
新建子配置文件
[root@nginx-node1 ~]# vim /usr/local/nginx/conf/nginx.conf
gzip on;
gzip_comp_level 5;
gzip_min_length 1k;
gzip_http_version 1.1;
gzip_vary on;
gzip_types text/plain application/javascript application/x-javascript text/css
application/xml text/javascript application/x-httpd-php image/gif image/png;
刷新保存
创建一个小文件
大文件
成功!!!
nginx中的变量
[root@nginx-node1 conf.d]# vim vars.conf
server {
listen 80
server_name var.timinglee.org;
root /data/web/html;
index index.html;
location /var {
default_type text/html;
echo $remote_addr;
echo $args;
echo $document_root;
echo $document_uri;
echo $host;
echo $remote_port;
echo $remote_user;
echo $request_method;
echo $request_filename;
echo $request_uri;
echo $scheme;
echo $server_protocol;
echo $server_addr;
echo $server_name,
echo $server_port;
echo $http_user_agent;
echo $http_cookie;
echo $cookie_key2;
echo $name;
}
}
[root@nginx-node1 conf.d]# nginx -s reload
输入命令查看
[root@nginx-node1 conf.d]# curl -b "key1=lee,key2=lee1" -u lee:lee var.timinglee.org/var?name=lee&&id=6666
防盗链
防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标 记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链。
当我们网页中有一个图片
他人直接连接到我们网站的图片,直接不劳而获
做一些措施防止此类事情的发生
反向代理
nginx主机
[root@nginx html]# vim /usr/local/nginx/conf.d/vhosts.conf
server {
listen 80;
server_name www.timinglee.org;
location /{
proxy_pass http://192.168.160.110:80;
}
}
server1主机
下载httpd
yum install httpd -y
写入数据做测试
echo server1 192.168.160.110 > /var/www/html/index.html
server2 主机
下载httpd
yum install httpd -y
创建文件写入数据修改端口
[root@server2 ~]# mkdir /var/www/html/static
[root@server~]#echoserver2 192.168.160.120 >/var/www/html/static/index.html
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
测试
[root@nginx html ]# curl www.timinglee.org/static/server2 192.168.160.120
[root@nginx-node1 ~]# curl www.timinglee.orgserver1 192.168.160.110
FastCGI
什么是FastCGI?
FastCGI是进程管理器。CGI会将webserver的请求转发给会解决请求的人。PHP处于一会儿上班一会儿下班的状态。PHP-FPM:FastCGI Process Manager。worker进程一般会有多个,每个进程会嵌入一个PHP解析器,进行PHP代码的处理。
实验环境:
删掉nginx目录:
[root@nginx ~]# rm -rf /usr/local/nginx
解压
编译新的nginx
./configure --prefix=/usr/local/nginx --add-module=/root/echo-nginx-module-0.63 --add-module=/root/memc-nginx-module-0.20 --add-module=/root/srcache-nginx-module-0.33 --user=nginx --group=nginx --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-pcre
安装
[root@nginx nginx-1.26.2]# make && make install
安装php
下载安装依赖包
yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel oniguruma-devel
oniguruma-devel 这个包需要再网上下载
wget https://repo.almalinux.org/almalinux/9/CRB/x86_64/os/Packages/oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm
安装即可
[root@nginx nginx-1.26.2]# dnf oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm
编码
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd
--prefix=/usr/local/php \ #安装路径
--with-config-file-path=/usr/local/php/etc \ #指定配置路径
--enable-fpm \ #用cgi方式启动程序
--with-fpm-user=nginx \ #指定运行用户身份
--with-fpm-group=nginx \
--with-curl \ #打开curl浏览器支持
--with-iconv \ #启用iconv函数,转换字符编码
--with-mhash \ #mhash加密方式扩展库
--with-zlib \ #支持zlib库,用于压缩http压缩传输
--with-openssl \ #支持ssl加密
--enable-mysqlnd \ #mysql数据库
--with-mysqli \
--with-pdo-mysql \
--disable-debug \ #关闭debug功能
--nable-sockets \ #支持套接字访问
--enable-soap \ #支持soap扩展协议
--enable-xml \ #支持xml
--enable-ftp \ #支持ftp
--enable-gd \ #支持gd库
--enable-exif \ #支持图片元数据
--enable-mbstring \ #支持多字节字符串
--enable-bcmath \ #打开图片大小调整,用到zabbix监控是用到该模块
--with-fpm-systemd #支持systemctl 管理cg
再make
php相关配置优化
[root@nginx php-8.3.9]# cd /usr/local/php/etc/
[root@nginx etc]# ls
php-fpm.conf.default php-fpm.d
[root@nginx etc]# cp -p php-fpm.conf.default php-fpm.conf
[root@nginx etc]# vim php-fpm.conf
指定pid文件存放位置
[root@nginx etc]# cd php-fpm.d/
[root@nginx php-fpm.d]# cp www.conf.default www.conf -p
主配置文件
[root@nginx php-8.3.9]# cp php.ini-production /usr/local/php/lib/php.ini
时区修改
vim /usr/local/php/lib/php.ini
生成启动文件
[root@nginx php-8.3.9]# cp sapi/fpm/php-fpm.service /lib/systemd/system/
[root@nginx php-8.3.9]# vim /lib/systemd/system/php-fpm.service
环境变量
[root@nginx php-8.3.9]# cd /usr/local/php/bin/
[root@nginx bin]# vim ~/.bash_profile
[root@nginx bin]# source ~/.bash_profile
写子配置文件
[root@nginx bin]# vim /usr/local/nginx/conf/nginx.conf
[root@nginx bin]# vim /usr/local/nginx/conf.d/vhosts.conf
server {
listen 80;
server_name www.timinglee.org;
root /data/web/html;
location ~\.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
准备php测试页面
[root@nginx ~]# cat /data/php/index.php
<?php
phpinfo();
?>
测试
安装memcache模块
安装并解压
下载autoconf
phpize
复制文件到nginx发布目录中
[root@nginx memcache-8.2]# cp example.php memcache.php /data/php/
[root@nginx memcache-8.2]# vim /data/php/memcache.php
配置php加载memcache模块
[root@nginx memcache-8.2]# vim /usr/local/php/lib/php.ini
部署memcached
测试
不断刷新
查看性能
nginx 二次开发
先把nginx关闭,因为openresty与nginx只能运行一个
创建一个没有家目录不能远程登录的用户
编码
[root@nginx bin]# ./configure --prefix=/usr/local/openresty --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
安装
环境变量
[root@nginx bin]# vim ~/.bash_profile
[root@nginx bin]# source ~/.bash_profil
开启
****openresty与NGINX的用法基本一致