1.Nginx虚拟主机:
1.1.1 虚拟主机作用:
虚拟主机提供了在同一台服务器上运行多个网站的功能。
1.1.2 虚拟主机的三种模式:
- 基于多域名方式配置虚拟主机
- 基于多端口配置虚拟主机
- 基于多ip配置虚拟主机
- 基于多域名的虚拟主机是最常见的一种虚拟主机。只需配置你的DNS服务器,将每个主机名映射到正确的IP地址,然后配置 Nginx服务器,令其识别不同的主机名就可以了。
1.2.实验:
1.2.1 多端口实验
创建一个目录,下面存放虚拟主机文件。
同时在nginx.conf中配置如下语句。
include vhost/*.conf; #如果搞不清目录,就指定绝对路径/home/vhost/*.conf(自定义)
这个参数的作用就是将nginx.conf文件中的配置分分离出来。
v1.jfedu.conf
server {
listen 8080;
server_name v1.jfedu.net;
charset utf-8;
access_log logs/host.access.log main;
location / {
root /home/hadoop/nginx/v1;
index index.html index.htm;
}
}
v2.jfedu.conf
server {
listen 8081;
server_name v1.jfedu.net;
charset utf-8;
access_log logs/v3.access.log main;
location / {
root /home/hadoop/nginx/v2;
index index.html index.htm;
}
}
重启服务
/home/hadoop/nginx/sbin/nginx -s reload
将域名添加到hosts文件中,进行域名加端口访问
curl v1.jfedu.net:8080
curl v1.jfedu.net:8081 #不同的端口访问的页面不同
2.反向代理
2.1 概念
反向代理是nginx的一个重要功能,在编译安装时会默认编译该模块。在配 置文件中主要配置proxy_pass指令。
代理服务器接受客户端的请求,然后把请求代理给后端真实服务器进行处 理,然后再将服务器的响应结果返给客户端。
2.2 反向代理作用
与正向代理(正向代理主要是代理客户端的请求)相反,反向代理主要是 代理服务器返回的数据,所以它的作用主要有以下两点:
- 可以防止内部服务器被恶意攻击(内部服务器对客户端不可见)。
- 为负载均衡和动静分离提供技术支持.
2.2.1 反向代理语法:
代理服务器的协议,可支持http与https。
地址可以指定为域名或IP地址,以及可选端口。
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
2.3 实验
后端: 192.168.60.6
代理: 192.168.60.5
代理端:
location / {
proxy_pass http://192.168.60.6;
}
后端:
location /{
echo $host;
root html;
index index.html;
}
#下图中,后端默认为80端口,如果不是80端口,可以在代理端指定对应的端口或者域名,
#即:proxy_pass http://192.168.60.6:8080
#或者proxy_pass v1.jfedu.net:8080
注意: 这个地方配置后,重启服务可能会报错没有echo模块
(1)这个地方需要安装echo模块,将echo-nginx-module-0.61.tar上传到服务器上,然后解压。
(2)进入之前编译nginx的目录,重新进行预编译,对nginx模块进行升级,问题即可解决
cd /home/nginx-1.16.0
#增加echo模块
./configure --prefix=/home/hadoop/nginx --add-module=/home/echo-nginx-module-0.61
make && make install
make upgrade #更新
2.3.1 测试
访问代理端地址,结果如下
访问网页:
后端: 192.168.60.6
location /{
#echo $host; 注释掉host语句,就可以得到代理的页面
root html;
index index.html;
}
3. 代理缓存服务器实战
在代理服务器的磁盘中保存请求目标的内容,加快响应速度,减少应用服 务器(后端服务器)上的资源开销,比如多客户端请求相同的资源,代理 缓存命中后,对于应用服务器来说,只发生了一次资源调度。
而浏览器上的缓存配置,一般来说是用来减少本地IO的,请求目标的内容 会存放在浏览器本地。
# 代理服务器配置:
proxy_cache_path /data/nginx/cache max_size=10g
levels=1:2 keys_zone=nginx_cache:10m inactive=10m
use_temp_path=off;
upstream nginx {
server 192.168.60.5;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://nginx;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache nginx_cache;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 302 1d;
}
}
# /data/nginx/cache #缓存资源存放路径
# levels #设置缓存资源的递归级别,默认为
levels=1:2,表示Nginx为将要缓存的资源生成的key从后依次设置两级保
存。
key_zone #在共享内存中设置一块存储区域来存放缓存的key和
metadata,这样nginx可以快速判断一个request是否命中或者未命中缓存,
1m可以存储8000个key,10m可以存储80000个key
max_size #最大cache空间,如果不指定,会使用掉所有disk
space,当达到配额后,会删除不活跃的cache文件
inactive #未被访问文件在缓存中保留时间,本配置中如果60分钟
未被访问则不论状态是否为expired,缓存控制程序会删掉文件。inactive默
认是10分钟。需要注意的是,inactive和expired配置项的含义是不同的,
expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问
的缓存文件
use_temp_path #如果为off,则nginx会将缓存文件直接写入指定的
cache文件中,而不是使用temp_path存储,official建议为off,避免文件
在不同文件系统中不必要的拷贝
proxy_cache #启用proxy cache,并指定key_zone。如果
proxy_cache off表示关闭掉缓存。