百度提交网站已删内容,浙江建设厅网站官网,珠海网站系统建设,网站建设和推广一、简介#xff1a;
1、nginx、apache是什么#xff1f; Nginx是一个高性能的HTTP和反向代理web服务器#xff0c;同时也提供了IMAP/POP3/SMTP服务。它由伊戈尔赛索耶夫为Rambler.ru站点开发#xff0c;以其稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而…一、简介
1、nginx、apache是什么 Nginx是一个高性能的HTTP和反向代理web服务器同时也提供了IMAP/POP3/SMTP服务。它由伊戈尔·赛索耶夫为Rambler.ru站点开发以其稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。Nginx的特点包括占有内存少、并发能力强、配置简单并且支持负载均衡通常被用作前端服务器或反向代理服务器。它特别适合处理静态文件和网页服务同时也支持动态页面通过扩展脚本和模块。Nginx的这些特性使其在处理高并发访问时表现出色适合于需要处理大量并发连接的场景。 Apache则是一个模型化的服务器可以运行在几乎所有的服务器上以其模块多、性能稳定而著称。Apache支持多种模块和扩展包括对动态页面的支持如PHP等这使得它在处理动态请求时比较擅长。Apache采用同步多进程模型每个连接对应一个进程这种模型在处理复杂的应用逻辑时表现良好。然而与Nginx相比Apache在处理静态文件时的性能可能较低尤其是在高并发环境下。尽管如此Apache在模块化和.htaccess文件支持方面更有优势提供了更多的配置选项和灵活性适合于需要复杂配置和较多自定义功能的网站。在现代Web架构中Nginx和Apache经常一起使用利用它们各自的优势来提供更加强大和灵活的Web服务解决方案。例如Nginx可以作为前端的反向代理服务器来处理静态文件和缓存内容而Apache则处理动态请求。这种组合利用了两种服务器的最佳特性以满足不同类型的应用需求。
2、nginx进程结构
web请求处理机制
多进程方式服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端直 到用户关闭连接这样的优势是处理速度快子进程之间相互独立但是如果访问过大会导致服务 器资源耗尽而无法提供请求 多线程方式与多进程方式类似但是每收到一个客户端请求会有服务进程派生出一个线程和此客 户端进行交互一个线程的开销远远小于一个进程因此多线程方式在很大程度减轻了web服务器 对系统资源的要求但是多线程也有自己的缺点即当多个线程位于同一个进程内工作的时候可 以相互访问同样的内存地址空间所以他们相互影响一旦主进程挂掉则所有子线程都不能工作 了IIS服务器使用了多线程的方式需要间隔一段时间就重启一次才能稳定。 Nginx是多进程组织模型而且是一个由Master主进程和Worker工作进程组成。
3、nginx模块介绍
nginx 有多种模块
核心模块是 Nginx 服务器正常运行必不可少的模块提供错误日志记录 、配置文件解析 、事件 驱动机制 、进程管理等核心功能标准HTTP模块提供 HTTP 协议解析相关的功能比如 端口配置 、 网页编码设置 、 HTTP响应 头设置 等等可选HTTP模块主要用于扩展标准的 HTTP 功能让 Nginx 能处理一些特殊的服务比如 Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等邮件服务模块主要用于支持 Nginx 的 邮件服务 包括对 POP3 协议、 IMAP 协议和 SMTP协议的 支持Stream服务模块: 实现反向代理功能,包括TCP协议代理第三方模块是为了扩展 Nginx 服务器应用完成开发者自定义功能比如 Json 支持、 Lua 支 持等
二、nginx配置及其功能
1、环境搭建
1.1、下载安装
配置
去官网下载https://nginx.org/en/download.html
本地上传nginx scp 本地文件 userip路径
dnf install gcc pcre-devel zlib-devel openssl-devel -y安装需要的包
useradd -s /sbin/nologin -M nginx创建nginx用户
tar zxf nginx-1.24.0.tar.gz 解压
cd nginx-1.24.0/
./configure --prefix/usr/local/nginx \ 检测环境是否搭建完成
通过scp命令上传文件到虚拟机 没有error就代表成功然后输入make make install 查看发现有四个目录代表安装成功
1.2、检测版本以及参数
验证版本
vim ~/.bash_profile
添加如图参数 然后source ~/.bash_profile重启服务
查看版本 1.3、参数以及进程
使用二进制nginx
nginx version: nginx/1.18.0 Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
#显示版本和编译参数
-t : test configuration and exit #测试配置文件是否异常
-T : test configuration, dump it and exit#测试并打印
-q : suppress non-error messages during configuration testing #静默模式
-s signal :send signal to a master process: stop, quit, reopen, reload
发送信号,reload信号 会生成新的worker,但master不会重新生成
-p prefix : set prefix path (default: /etc/nginx/)#指定Nginx 目录
-c filename : set configuration file (default: /etc/nginx/nginx.conf)
#配置文件路径
-g directives : set global directives out of configuration file #设置全局指令,注意和配置文件不要同时配置,否则冲突
-V参数 查看版本 Vim auto/cc/gcc 关闭debug
接着关闭nginx
Nginx -s stop
然后vim /usr/local/nginx/conf/nginx.conf
把第二行work_processes注释掉
然后nginx -g “work_processes 6”
接着使用ps aux | grep nginx 三、nginx功能及其高级配置
1、nginx启动文件
如果出现发现不了pid或者进程被占用可以用如下代码
[rootiZ2ze4ef9xk9hkxafq58d9Z ~]# pkill -9 nginx
[rootiZ2ze4ef9xk9hkxafq58d9Z ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[rootiZ2ze4ef9xk9hkxafq58d9Z ~]# /usr/local/nginx/sbin/nginx -s reload操作
vim /lib/systemd/system/nginx.service [Unit]
DescriptionThe NGINX HTTP and reverse proxy server
Aftersyslog.target network-online.target remote-fs.target nss-lookup.target
Wantsnetwork-online.target[Service]
Typeforking
PIDFile/usr/local/nginx/logs/nginx.pid
ExecStarPre/usr/local/nginx/sbin/nginx -t
ExecStart/usr/local/nginx/sbin/nginx
ExeReload/usr/local/nginx/sbin/nginx -s reload
ExecStop/bin/kill -s QUIT $MAINPID
PrivateTmptrue[Install]
WantedBymulti-user.target接着重载
Systemctl daemon-reload
然后启动
Systemctl enable --now nginx 2、平滑升级
2.1首先下载nginx更高的版本1.26.1
接着下载echo-nginx-module-0.63.tar.gz
解压后进入1.26.1
使用如下命令编译新版本
./configure --prefix/usr/local/nginx --usernginx --groupnginx --add-module/root/echo-nginx-module-0.63 --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 接着输入make
2.2备份旧版本 2.3检测是否出现问题 通过命令ps ax | grep nginx查看进程号并鲨掉
Kill -USR2 42274 这里可以看到旧版本仍然生效 在这里回收旧版本然后再查看发现已经更新了 3、回滚版本
3.1、卸载
如果发现新版本有问题就使用回滚机制返回之前的版本
同样在sbin目录下备份新版本cp nginx nginx.26
然后mv nginx.24 nginx 3.2、改变进程
鲨掉Kill -HUP 进程号
回收Kill WINCH 进程号
恢复原进程号
Kill -HUP 原进程号
Curl -I localhost
查看版本完成 4、nginx全局配置
Vim /usr/local/nginx/conf/nginx.conf
更改如下配置 检测 、
5、location用法
5.1、测试文件
首先创建vim /usr/nginx/conf.d/vhost.conf 然后重载最后页面访问 5.2、测试优先级
对目录等于*不带符号^ 同时测试 6、nginx用户认证
6.1、Htpasswd命令
首先下载包 创建并给用户设置密码 如果是已有用户去掉-c参数否则创建新的会重置原用户 查看密码 6.2、测试登录界面
先创建目录然后编辑conf文件接着放入自己想要显示的放入html中 6.2.1、登录页面 登录后 6.2.2、错误页面
同样编辑conf文件 接着将自己想要展示的放在里面 随便测试一个错误界面 7、自定义日志
添加如图参数 创建目录重载nginx 8、nginx文件检测
Vim /usr/local/nginx/conf.d/vhost.conf 9、nginx长链接
9.1、配置
Yum install telnet -y
Nginx 下载服务器
首先mkdir /data/web/download
设置 dd if/dev/zero of/data/web/download/leefile bslM count100
接着更改配置 9.2、测试 10、nginx状态页
Vim /usr/local/nginx/conf.d/vhost.conf 同时vim /usr/local/nginx/conf.d/status.conf 测试 11、nginx内置变量
11.1、更改配置文件并重载 11.2、更改hosts #nginx的内置变量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 $is_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;}
}
12、nginx自定义变量
12.1、nginx配置代码
#nginx自定义变量
server {listen 80;server_name var.timinglee.org;root /data/web/html;index index.html;location /var {default_type text/html;set $timinglee lee;echo $timinglee;}
} 测试 Ps:记得注释之前哪个vars.conf全是血的教训
13、Nginx网页重写 这里可以看到显示出我设置的文本
14、Break参数 15、Return参数 在curl之前打开windows命令提示符cd C:/WINDOWS/system32/drivers/etc
Echo 本机IP var.handsomeyang hosts我的本地hosts 16、Rewrite 临时和永久 17、Break和last 18、全站加密
Cd /usr/local/nginx/
Mkdir certs Vim /usr/local/nginx/conf.d/vhost.conf 19、实现盗链
19.1、首先实现防盗链
在主机中 创建目录/var/www/html/images在主机172.25.254.100中下载图片到/data/web/html和images中注意images中只能放一张图片否则会陷入死循环。
19.2、实现盗链
在node2中
然后vim /var/www/html/index.html 19.3、refer对于ip访问和域名的区别
这里实现更改盗链为不可见 图片就找不到了同时点击老杨 禁止了全栈所以看不到了直接使用www.handsomeyang.org是带了refer而172.25.254.100是不带refer的。 所以ip访问是有的 这里设置对方盗链时都扔到设置的图片哪里 20、nginx反向代理
20.1、准备
在上述两台机器上再克隆一台红帽9的IP设为172.25.254.20 同时都echoIP到index
在主机curl两台机子 20.2、构建代理 vim /etc/httpd/conf/httpd.conf Vim /usr/local/nginx/conf.d/vhost.conf Ps:两个proxy必须注释一个
这种可以两个存在 同样vim vhost.conf 在node1主机中
Dnf install php -y 21、反向代理缓存
在node1也就是172.25.254.10中修改/etc/hosts添加www.handsomeyang.org
接着ab -n1000 -c100 http://www.handsomeyang.org/static/index.html 接下来在主机中vim /usr/local/nginx/conf/nginx.conf 接着vim /usr/local/nginx/conf.d/vhost.conf 22、反向代理负载均衡
vim /usr/local/nginx/conf.d/vhost.conf
22.1、更改参数测试域名 、 22.2、-b参数 22.3、bind参数
在node1,2里面安装bind
接着vim /etc/named.conf 接着systemctl restart named.service