第十七周--作业
1、nginx负载均衡中常见的算法及原理有哪些?
rr轮询 rr轮询算法为nginx默认调度算法,按客户端请求顺序把客户端的请求逐一分配到不同的后端节点服务器,这相当于LVS中的rr轮询算法。如果后端节点服务器宕机,宕机的服务器会被自动从节点服务器池中剔除,以使客户端的用户访问不受影响。新的请求会分配给正常的服务器。 wrr加权轮询 在rr轮询算法的基础上加上权重,即为权重轮询算法。权重越高,在被访问的概率越大。可以根据服务器的配置和性能指定权重值大小,达到合理有效的地利用主机资源。 ip_hash源地址hash 源地址hash调度算法,基于的客户端的remote_addr(源地址IPv4的前24位或整个IPv6地址)做hash计算,以实现会话保持。该方法确保来自同一客户端的请求将始终传递到同一服务器,除非该服务器不可用。在该服务器不可用的情况下,客户端请求将被传递到另一台服务器。很可能,它也将始终是同一台服务器。 least_conn最少连接 最少连接调度算法,优先将客户端请求调度到当前连接最少的后端服务器,相当于LVS中的WLC加权最少连接算法。同时考虑服务器的权重,如果后端服务器的连接数都相同时,则使用WRR加权轮询调度算法。 hash KEY [consistent] 一致性hash算法 基于指定请求报文中首部字段或者URI等key做hash计算。可以包含文本、key变量及其组合。 如果consistent指定了参数,将使用ketama一致性hash算法。该方法确保在将服务器添加到组或从组中删除时,只有少数密钥将重新映射到不同的服务器。这有助于为缓存服务器实现更高的缓存命中率。 一致性hash算法适用于后端是Cache服务器(如varnish)时使用,consistent定义使用一致性hash运算,一致性hash基于取模运算 注意:从组中添加或删除服务器可能会导致将大部分密钥重新映射到不同的服务器。 |
2、使用rewrite规则实现将所有到a域名的访问rewrite到b域名
修改Nginx服务器配置文件 vim /apps/nginx/conf.d/pc.conf server { listen 80; server_name www.magedu.org; root /data/nginx/html/pc/; location / { root /data/nginx/html/pc/; rewrite / http: //www.jf.com permanent; } } server { listen 80; server_name www.jf.com; root /data/nginx/html/jf/; } 创建缺少的文件 mkdir /data/nginx/html/{pc,jf}/ -p echo 'pc website' > /data/nginx/html/pc/index.html echo 'this is the new website page' > /data/nginx/html/jf/index.html 绑定ip地址 vim /etc/hosts 10.0.0.7 www.magedu.org www.jf.com 重读配置文件 nginx -t nginx -s reload 测试 curl www.magedu.org -L |
3、实现反向代理客户端IP透传
修改Nginx服务器配置文件 server { listen 80; proxy_set_header X-Real-IP $remote_addr; server_name www.magedu.org; root /data/nginx/html/pc/; location / { root /data/nginx/html/pc; proxy_pass http: //10.0.0.8; } } 修改http服务首页为hello word 修改http服务配置文件 vim vim /etc/httpd/conf/httpd.conf LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\ \" combined 此行修改为 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\ " %{X-Real-IP}i\" \" combined 重启服务 客服端测试访问 curl www.magedu.org |
4、利用LNMP实现wordpress站点搭建
安装数据库服务
yum -y install mariadb-server<br><br>修改配置文件,添加server-id和开启二进制日志<br>server-id=17<br>log-bin<br><br>systemctl enable mariadb-server<br>systemctl start mariadb-server<br><br>创建用户账号并授权<br>登陆mariadb<br>mysql<br><br>创建账号<br>create databases wordpress<br>create user 'wordpress@10.0.0.%' identified by '123456' ;<br>grant all on wordpress.* to 'wordpress@10.0.0.%' ; |
部署php
安装依赖包<br>yum install gcc openssl-devel libxml2-devel bzip2-devel sqlite-devel libmcrypt-devel oniguruma-devel<br><br>下载并解压php源码包<br>https: //www.php.net/releases/<br>tar xvf php-7.4.11.tar.gz -C /usr/local/<br><br>运行configure脚本<br>./configure --prefix=/apps/php74 --enable-mysqld --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-zlib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo<br><br>编译安装并安装<br>make -j 2 && make install<br><br>准备PHP配置文件<br>cp php.ini-production /etc/php.ini<br>cp php-fpm.conf.default php-fpm.conf<br>cp www.conf.default www.conf<br>vim /apps/php74/etc/php-fpm.d/www.conf<br>修改一下项:创建系统用户与日志文件<br>useradd -r -s /sbin/nologin www<br>mkdir /apps/php74/log<br><br>准备启动文件<br>cp /usr/local/php-7.4.11/sapi/fpm/php-fpm.service /usr/lib/systemd/system<br>systemctl daemon-reload<br>systemctl enable --now php-fpm.service<br><br>查看9000端口是否打开<br>ss -ntl |
[root@centos7 php-fpm.d]#grep '^[^;]' www.conf
[www]
user = www
group = www
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
access.log = log/$pool.access.log
slowlog = log/$pool.log.slow
部署nginx服务
下载依赖包 yum -y install gcc pcre-devel openssl-devel zlib-devel 解压源码包 tar xvf nginx-1.18.0.tar.gz -C /usr/local/ 执行configure脚本 ./configure --prefix=/apps/nginx --user=www -- group =www --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 编译并安装 make -j 2 && make install 准备启动脚本 mkdir /apps/nginx/run vim /apps/nginx/conf/nginx.conf #添加pid run/nginx.pid; vim /usr/lib/systemd/system/nginx.service [Unit] Description=nginx - high performance web server Documentation=http: //nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/apps/nginx/run/nginx.pid ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID LimitNOFILE=100000 [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl enable --now nginx 创建软连接 ln -s /apps/nginx/sbin/nginx /usr/sbin/ 检查配置文件语法 nginx -t 配置nginx支持fastcgi vim /apps/nginx/conf/nginx.conf server { listen 80; server_name www.dnhc.com; location / { root /data/nginx/wordpress; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root /data/nginx/wordpress; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ ^/(ping|pm_status)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; include fastcgi_params; } nginx -t 重读配置文件 nginx -s reload<br><br>准备php测试页面<br>mkdir -p /data/nginx/wordpress<br>vim /data/nginx/wordpress/test.php<br><?php<br>phpinfo ();<br>?><br>绑定域名<br>vim /etc/hosts |
部署wordpress
下载地址: https: //cn.wordpress.org/download/ 解压源码包 tar xvf wordpress-6.0.1-zh_CN.tar.gz -C /usr/local/ 移动wordpress文件 cp -r /usr/local/wordpress/* /data/nginx/wordpress/ 修改文件权限 chown -R www.www /data/nginx/wordpress/ |
注意:初始化web页面登陆时会包403错误
在nginx配置文件里添加默认访问页面index.php即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通