nginx配置及多种功能实现

認識NGINX|方格子vocus

一、实现nginx配置文件基础优化

实现nginx版本号隐藏
HTTP段中加入 server_tokens off;

nginx配置及多种功能实现


使用curl命令可以查看nginx版本号已经隐藏
优化前

nginx配置及多种功能实现

优化后

nginx配置及多种功能实现

实现网页压缩

http段找到gzip on

nginx配置及多种功能实现
    gzip  on; 
    gzip_min_length 1k; 
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss;

调整最大连接数

events {
    use epoll;
    worker_connections  10240;
}

10240即为调整值,调整到更高可以增大并发量

二:nginx实现多种扩展功能

Nginx的状态统计

安装nginx时已经将--with-http_stub_status_module 模块开启

修改nginx配置文件(写入要访问的server标签中)

vim /usr/local/nginx/conf/nginx.conf

nginx配置及多种功能实现

平行于上一个location

连接命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx

nginx -t 检测语法

nginx配置及多种功能实现

重启nginx

service nginx restart

nginx配置及多种功能实现

输入网址http://192.168.1.10/nginx_status

nginx配置及多种功能实现

目录保护功能(本实验状态统计页面加入认证,继续上个实验)

在状态统计的location中添加:
auth_basic "Welcome to nginx_status!";
auth_basic_user_file /usr/local/nginx/html/htpasswd.nginx;

nginx配置及多种功能实现

使用http的命令htpasswd进行用户(user)密码文件的创建(生成在上面指定的位置,此处下载httpd,并输入自定义密码)

htpasswd -c /usr/local/nginx/html/htpasswd.nginx user

nginx配置及多种功能实现

重启nginx并再次访问统计页面http://192.168.1.10/nginx_status
service nginx restart

nginx配置及多种功能实现

基于IP的身份验证(访问控制)

vim /usr/local/nginx/conf/nginx.conf
在状态统计的location中添加:

nginx配置及多种功能实现

allow 192.168.1.11
deny 192.168.1.0/24
允许192.168.1.10访问,本网段其他IP都禁止访问

主机(本主机虚拟网卡IP为192.168.1.1)登录http://192.168.1.10/nginx_status

nginx配置及多种功能实现

使用11主机测试
elinks 192.168.1.10/nginx_status

nginx配置及多种功能实现

设置缓存时间

nginx配置及多种功能实现

缓存时间1小时

nginx的虚拟主机(基于域名)

方法:
提前准备好两个网站的域名,并且规划好两个网站网页存放目录
在Nginx主配置文件中并列编写两个server标签,并分别写好各自信息
分别访问两个不同的域名验证结果

创建网页目录,建立网页
cd /usr/local/nginx/html/
创建两个目录blog和bbs
在blog创建 blog.index:blog.yun211.com
在bbs创建 bbs.index:bbs.aliyun.com

修改hosts主机域名解析
vim /etc/hosts

nginx配置及多种功能实现

修改配置文件
vim /usr/local/nginx/conf/nginx.conf
删除上个实验的location /nginx_status标签
取消log_format注释

nginx配置及多种功能实现

增加两个server(额外两个虚拟主机)

nginx配置及多种功能实现

将上面的php粘贴下来,修改路经(让php解析nginx)

nginx配置及多种功能实现

nginx -t  检查后检测

elinks blog.yun211.com

nginx配置及多种功能实现

elinks bbs.yun211.com

nginx配置及多种功能实现

nginx的反向代理

简介
正向代理和反向代理  
正向代理:找别人代替你去完成一件你完不成的事(例如代购),代理的对象是客户端
反向代理:替厂家卖东西的人就叫反向代理(例如烟酒代理),代理的对象是服务器端,对服务器是一种保护

nginx配置及多种功能实现

add:服务端产生的日志默认记录的都是nginx代理服务器的IP

proxy代理选项

proxy_pass_header field  发送头部信息
proxy_hide_header field  隐藏头部信息
proxy_pass_request_body on|off 是否将客户端请求的内容发送给服务器,默认是on
proxy_pass_request_headers on|off 是否将客户端请求的头部信息发送给服务器,默认是on
proxy_set_header 
proxy_connect_timeout  时间    nginx代理与后端服务器连接时间默认是60s
proxy_buffering on|off;  开启或关闭缓冲,默认是开启
proxy_buffers 数量(8) 大小(4k)大小一般与内存页的大小相同
proxy_cache 缓存
proxy_cache on|off  zone设置用于存放花村索引的内存区域的名称

实验一、操作目标:让nginx做apache的反向代理服务器

11端开启httpd服务
开启一台服务器(这里我用192.168.1.11),安装httpd
cd /var/www//html/
echo "www.11.com" >index.html

10(nginx反向代理)端
vim /usr/local/nginx/conf/nginx.conf

nginx配置及多种功能实现

elinks blogs.yun211.com

成功访问到httpd服务器

nginx配置及多种功能实现

实验二、通过代理服务器获取客户端的IP
准备lamp架构一组安装在12服务器端,当客户端从11服务器上访问头部为php结尾的,则直接转交给lamp服务器
配置信息
nginx中配置:

location ~ \.php$ {
                proxy_pass http://192.168.2.14;
                proxy_set_header Host $host;
                proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
                proxy_set_header X-real-ip $remote_addr;
        }
	
nginx配置及多种功能实现

apache 2.4中配置:

apache 2.4中配置追加:
RemoteIPHeader X-Forwarded-for
RemoteIPInternalProxy 192.168.1.11

nginx配置及多种功能实现

在access.log日志格式中添加%a:

LogFormat "%h %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

nginx配置及多种功能实现

测试
查看日志 tail /etc/httpd/logs/access_log
配置前

nginx配置及多种功能实现

配置后

nginx配置及多种功能实现

第一条数据192.168.1.11是代理服务器的IP,第二段是客户端IP(192.168.1.1)

nginx负载均衡

负载均衡(Load Balance)其意思就是将任务分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

nginx轮询调度算法

1 轮询
2 加权轮询(默认)
接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
3 ip_hash
每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
4 url_hash
按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包
5 fair
智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者(加权轮巡和IP_hash)的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块

结构图

nginx配置及多种功能实现

apache对动态页面处理更加稳定,单个apache性能较低,当多个apache进行处理时,nginx反向代理服务器可以将用户请求均衡到apache上,既实现了反向代理,又实现了负载均衡。

实验操作

环境准备:将10作为nginx负载均衡服务器,11和12是apache服务器,使用的域名是blog.yun211.com

11、12服务器
开启12服务器,下载httpd,在/var/www/html 创建index.html
echo "www.11(2).com" >/var/www/html/index.html
systemctl start httpd

10端部署nginx服务器
vim /usr/local/nginx/conf/nginx.conf

nginx配置及多种功能实现

修改之前的location / 标签

nginx配置及多种功能实现
nginx配置及多种功能实现

重启服务

curl blog.yun211.com

nginx配置及多种功能实现

拓展补充:rr算法实现加权轮询
修改配置文件:

nginx配置及多种功能实现
nginx配置及多种功能实现

实现压力分配比为2:1

nginx实现https和证书rewrite功能

安装nginx时,需要将--with-http_ssl_module 模块开启

在对应要进行加密的server标签中添加以下内容开启SSL

实验操作

对bbs进行加密

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

nginx配置及多种功能实现

创建认证

cd /usr/local/nginx/conf
mkdir ssl ; cd ssl
openssl genrsa -out yun211.key 1024
在实验环境中可以用命令生成测试,在生产环境中必须要在https证书厂商注册
建立服务器私钥,生成RSA密钥

openssl req -new -key yun211.key -out yun211.key.csr 

nginx配置及多种功能实现

需要依次输入国家,地区,组织,email。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书

openssl x509 -req -days 365 -sha256 -in yun211.key.csr -signkey yun211.key -out yun211.crt

nginx配置及多种功能实现

生成签字证书

设置http自动跳转https功能

原有的server标签修改监听端口改为443

nginx配置及多种功能实现

新加入server

nginx配置及多种功能实现

检测 nginx -t 重启 service nginx restart

使用windows进行检测(mac直接修改hosts文件即可)
修改hosts文件
C:\Windows\System32\drivers\etc

nginx配置及多种功能实现

追加

nginx配置及多种功能实现

测试
输入http://bbs.yun211.com

nginx配置及多种功能实现

域名镜像

完全相同的网站分别放置到不同服务器上,并分别使用独立的url
作用:流量负载

配置简介:
"^"代表www.yun211.com
"/"代表从www.yun211.com/ 之后的“/”
目的:实现多个服务器共同分担访问压力

实验:

配置10

nginx配置及多种功能实现

开启服务器11
建立一个blog.yun211.com的域名然后建立和www.yun211.com相同的目录文件
10端

nginx配置及多种功能实现

11端

nginx配置及多种功能实现

测试:

nginx配置及多种功能实现

防盗链

书写格式:
valid_referers none|blocked|server_name …
获取referer头域中的值,并会给$invalid_referer变量赋值
none代表请求头中没有referer信息,这一般是直接在浏览器输入图片网址
blocked代表被防火墙过滤标记过的请求

举个例子:

nginx配置及多种功能实现

实验:

配置详解

图片资源源站服务器配置
可以进行配置的选项

nginx配置及多种功能实现

条件这样写:

nginx配置及多种功能实现

如果连接的来源不是www.tupian.com的域(不区分大小写),则强制跳转到http://bbs.yunban.cn/error.jpg ,若不设置错误页面,可以返回 403 报错

盗链网站服务器配置

nginx配置及多种功能实现

vim /usr/local/nginx/html/index.html

nginx配置及多种功能实现

mkdir /usr/local/nginx/html/pictures  源站建立图片目录,加入一张图片a.jpg 

不取消注释尝试访问www.toutu.com

nginx配置及多种功能实现

取消注释重新加载尝试

nginx配置及多种功能实现

动静分离

准备
目的:实现了动态PHP 语言由 LAMP 服务器提供解析(192.168.1.11),静态图片由 Nginx 服务器提供解析(192.168.1.10)
服务器准备
nginx服务器:192.168.1.10
httpd服务器:192.168.1.11

安装nginx(10端)
安装依赖
yum -y install gcc gcc-c++ make
yum -y install pcre-devel zlib-devel
useradd -M -s /sbin/nologin nginx
解包
tar xf nginx-1.6.0.tar.gz
cd nginx-1.6.0
配置
./configure --prefix=/usr/local/nginx1.6 --user=nginx --group=nginx -with-http_stub_status_module --with-http_ssl_module
编译,安装
make && make install
ln -s /usr/local/nginx1.6 /usr/local/nginx
ln /usr/local/nginx/sbin/nginx /usr/sbin/nginx

vim /usr/local/nginx/conf/nginx.conf

nginx配置及多种功能实现

根目录指定在/web

nginx配置及多种功能实现
        location ~ \.php$ {
            proxy_pass   http://192.168.1.11:80;
        }   
        location ~ \.(gif|jpg|jpeg|bmp|png|swf) {
            root /web/;
        }

指定当匹配为php结尾的数据去lamp服务器拿,当匹配到指静态图片的文件,到本地拿

开启服务
nginx -t
nginx

创建网页根目录的静态图片和初始页面:
mkdir /web;cd /web

echo "<h1>nginx ok<h1>" > /web/index.html

加入一张图片测试:

nginx配置及多种功能实现
nginx配置及多种功能实现
nginx配置及多种功能实现

lamp准备:

下载lamp服务:
yum -y install httpd mariadb mariadb-server php php-mysql

初始化数据库:
systemctl start mariadb
mysqladmin -uroot password 123
mysql -uroot -p123

测试httpd-php-mysql连通性

systemctl start httpd
vim /var/www/html/test.php

<?php
$link=mysql_connect('localhost','root','123');
if($link) echo "<h1>mysql-php successful</h1>";
mysql_close();
?>

测试登陆页面   http://192.168.1.11/test.php

nginx配置及多种功能实现

当访问静态页面,回(nginx)去拉取

echo "<img src=http://192.168.1.10/1.jpg>" >>/var/www/html/test.php

测试:http://192.168.1.11/test.php

nginx配置及多种功能实现

测试:
静态页面nginx代理本地找

nginx配置及多种功能实现

动态页面lamp找

nginx配置及多种功能实现

当动态页面需要静态内容时,回来找静态页面的内容(在html中配置下src即可,前端开发的操作)

发布者:LJH,转发请注明出处:https://www.ljh.cool/5872.html

(0)
上一篇 2020年10月30日 下午2:40
下一篇 2020年11月4日 下午5:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注