nginx

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的用法基本一致

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值