1.虚拟主机的配置:
虚拟主机的作用:
虚拟主机提供了同一台服务器上运行多个网站的功能。
虚拟主机的三种模式:
 
1)基于域名配置虚拟主机是最常见的一种虚拟主机配置。
只需配置你的DNS服务器,将每个主机名映射到正确的IP地址,然后配置nginx服务器,令其识别不同的主机名旧可以了。
 
因为我们没有专门的DNS服务器, 以下使用Windows下的hosts或者Linux中的hosts充当DNS均可:
Windows配置方法: c盘>windows>System32>drivers>etc

配置虚拟主机: 在http模块中添加:引用模块(虚拟主机放置目录)
http {
include /usr/local/nginx/conf/vhost/*;
}
创建虚拟主机配置文件:
mkdir -p /usr/local/nginx/conf/vhost/
touch /usr/local/nginx/conf/vhost/www.fdd{1..3}.com 三个虚拟主机均配置相同
cat >/usr/local/nginx/conf/vhost/www.fdd1.com<<EOF
server {
listen 80;
server_name www.fdd1.com;
location / {
root html/www.fdd1.com;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
EOF
创建虚拟主机发布目录及文件:
mkdir -p /usr/local/nginx/html/www.fdd{1..3}.com
echo "this is www.fdd1.com">/usr/local/nginx/html/www.fdd1.com/index.html
echo "this is www.fdd2.com">/usr/local/nginx/html/www.fdd2.com/index.html
echo "this is www.fdd3.com">/usr/local/nginx/html/www.fdd3.com/index.html
2)基于多端口配置虚拟主机:可以使用同一个IP,通过访问不同的端口来访问:
修改配置文件加域名:
echo "80">>/usr/local/nginx/html/index.html
echo "8080">>/usr/local/nginx/html/www.fdd1.com/index.html cat /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.fdd1.com;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 8080;
server_name www.fdd1.com;
location / {
root html/www.fdd1.com/;
index index.html index.htm;
}
}
测试访问效果:
curl www.fdd1.com

curl www.fdd1.com:8080
3)基于IP配置虚拟主机:可以通过基于域名的虚拟主机:
复制网卡
cp /etc/sysconfig/network-scripts/ifcfg-ens33{,:1}
cat /etc/sysconfig/network-scripts/ifcfg-ens33
cd /etc/sysconfig/network-scripts/
修改ens33:1网卡中的IP为1.110, 网卡名称为ens33:1
sed -i 's/ens33/ens33:1/g;s/192.168.1.10/192.168.1.100/g' fcfg-ens33:1
重启网卡:
systemctl restart network
配置1.100发布配置文件:
cat >/usr/local/nginx/conf/vhost/www.fdd100.com<<EOF
server {
listen 192.168.1.100:80;
server_name www.fdd100.com;
location / {
root html/www.fdd100.com;
index index.html index.htm;
}
}
配置发布目录及文件:
mkdir -p /usr/local/nginx/html/www.fdd100.com
echo "this is www.fdd100.com 80" >/usr/local/nginx/html/www.fdd100.com/index.html
配置DNS解析将IP与域名绑定 加入hosts:
echo "192.168.1.100 www.fdd100.com" >>/etc/hosts
/usr/local/nginx/sbin/nginx -s reload
curl 192.168.1.100
2、部署nginx代理缓存服务器,并验证缓存时否生效:
反向代理概念:
反向代理是nginx的一个主要功能,在编译安装时会默认编译该模块。在配置文件中主要配置proxy_pass指令。
代理服务器接收客户端的请求,然后把请求代理后端服务器真实服务器进行处理,然后再将服务器的响应结果返回给客户端。
反向代理作用:
与正向代理(正向代理主要是代理客户端的请求)相反,反向代理主要是代理服务器返回的数据,所以它的作用主要有以下两点:
1)可以防止内部服务器被恶意攻击(内部服务器对客户端不可见);
2)为负载均衡和动静分离提供技术支持。
 
实例一:

location和proxy_pass都不带uri路径。

代理服务器: 192.168.1.10

后端服务器: 192.168.1.12

反向代理配置(仅供参考)
server {
listen 8080;
server_name 反代服务器IP;
location / {
proxy_pass web服务器IP;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
代理服务器配置:nginx.conf
    proxy_pass http://192.168.1.12;

后端服务器配置:nginx.conf

echo $host; 主要是看下后端服务器的hosts是什么。

代理服务器验证: 下图看到我问访问1.10前端代理服务器,但是得到的结果是1.12的hosts的文件信息/ 发布目录文件。

curl 192.168.1.10

实例二:
proxy_pass没有设置uri路径,但是代理服务器的location有uri,那么代理服务器将把请求的地址传递给后端服务去。
代理服务器配置:
location /data/www/ {
index index.html index.htm;
proxy_pass http://192.168.1.12;
}

需要在后端服务器html目录下创建/data/www/目录及发布的文件index.html:
cd /usr/local/nginx/html/
mkdir -p /data/www
echo "this is 192.168.1.12 后端服务器">/data/www/index.html
/usr/local/nginx/sbin/nginx -s reload

验证测试效果:当访问1.10代理服务器的/data/www/index.html资源时, 代理服务去将请求转发到了后端服务器,也就是访问到了后端服务去的资源:

curl 192.168.1.10/data/www/index.html

实例三:
如果proxy_pass设置了uri路径,则需要注意,此时:proxy_pass指令的uri会覆盖location的uri.
代理服务器配置:
location / {
root html;
index index.html index.htm;
proxy_pass http://192.168.1.12/data/;
}

后端服务器配置:

cd /usr/local/nginx/html/
echo "this is /usr/local/nginx/html/data test.">data/index.html
代理服务器验证效果:

curl 192.168.1.10

获取远程客户端真实的IP地址:
代理服务器配置:
proxy_pass http://192.168.1.12/data/;
proxy_set_header Host $hhost;
proxy_set_header X-Real-IP $remote_addr;

后端服务器配置:
开启log_format日志访问收集功能模块

添加接受代理请求的IP

$http_x_real_ip

后端服务器验证效果: 需要在1.11客户端访问代理服务去,代理请求IP给后端服务器,后端服务器接受并且记录到访问日志中:

curl 192.168.1.10

查看Nginx访问日志
tailf /usr/local/nginx/logs/access.log

2、缓存代理服务器实战:
在代理 服务器的磁盘中保存请求目标的内容,加速响应速度,减少应用服务器(后端服务器)上的资源开销。比如多客户端请求相同的资源,代理缓存命令中,对于应用来说,只发生了一次资源调度。而浏览器上的缓存配置,一般来说时用来减少本地IO,请求目标的内容会存放在浏览本地。
 
 
缓存参数解释:
缓存资源存放路径
/data/nginx/cache 设置缓存资源的递归级别,默认为levels=1:2,表示Nginx为将要缓存的资源
生成的key从后依次设置两级保存。
levels 在共享内存中设置一块存储区域来存放缓存的key和metadata,这样nginx可以快速
判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个
key_zone 最大cache空间,如果不指定,会使用掉所有disk space,当达到配额后,
会删除不 活跃的cache文件
key max_size 未被访问文件在缓存中保留时间,本配置中如果60分钟未被访问则不论状态是否为 expired,
缓存控制程序会删掉文件。inactive默认是10分钟。需要注意的是,inactive和expired
配置项的含义是不同的,expired只是缓存过期,但不会被删除,inactive是删除指定时间内
未被访问的缓存文件
inactive 如果为off,则nginx会将缓存文件直接写入指定的cache文件中,而不是使用
temp_path存储,official建议为off,避免文件在不同文件系统中不必要的拷贝
use_temp_path 启用proxy cache,并指定key_zone。如果proxy_cache off表示关闭掉缓存。
proxy_cache

代理端服务器配置:

prxy_cache_path /data/nginx/cache max_size=10g levels=1:2 keys_zone=nginx_cache:10m inactive=60m use_temp_path=off;

proxy_cache nginx_cache;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 302 1d;

后端服务验证效果: 配置完文件后需要重新加载nginx服务:
客户端1.11访问1.10代理服务器,1.10代理服务器将数据缓存到/data/nginx/cache目录下:当下次客户端来访问相同的资源时,代理服务器无需从后端服务器中拿取资源,从而减少后端服务器的压力:

代理端查看缓存的数据:
/usr/local/nginx/sbin/nginx -s reload
mkdir -p /data/nginx/cache

后端服务器在次验证效果: 将资源删除,不影响客户端访问:

注意:1.10是代理服务器,当客户端访问代理服务器时,资源是后端服务器提供的,我们已经把后端的服务器资源删除了,但是并不影响客户端继续访问,为什么呢? 原因很简单: 因为我们在代理服务器配置了缓存,此时的资源的代理的缓存提供的,说明缓存已经生效了,后端服务器的资源删除了,所以并不影响继续访问:

如果把代理服务器的缓存也删除了,再次来验证效果:客户端将访问步到该资源了,而且会报错:404/403

配置虚拟主机-部署nginx代理并验证缓存生效的更多相关文章

  1. Nginx安装、配置虚拟主机、反向代理、负载均衡

    1.   nginx安装 下载nginx: 官方网站: http://nginx.org/ 使用的版本是1.8.0版本. Nginx提供的源码. 1.1. 要求的安装环境 1.需要安装gcc的环境.y ...

  2. nginx配置虚拟主机、反向代理和负载均衡

    为了实现这个功能,需要修改nginx的配置文件,将nginx.conf清理一下,使结构更清晰. worker_processes ; events { worker_connections ; } h ...

  3. wamp2.4.4 如何配置虚拟主机及反向代理(解决跨域问题)

    一.找到安装目录下的httpd.conf文件 1. 删除Include conf/extra/httpd-vhosts.conf前面的#号(开启虚拟主机的配置) 2. 删除LoadModule pro ...

  4. 快速掌握Nginx(一) —— 安装Nginx和简单配置虚拟主机

    Nginx安装和简单配置虚拟主机 1 Nginx简介 Nginx是近几年最火热的http.反向代理服务器,百度阿里等互联网公司也都在使用Nginx,它也可以用作邮件代理服务器.TCP/UDP代理服务器 ...

  5. nginx之安装、多虚拟主机、反向代理和负载均衡

    一.web服务器与web框架 1.web服务器简介 Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的Web服务器会通过 HTTP(超文 ...

  6. nginx的虚拟主机和反向代理和一些技巧应用

    前言 nginx是什么,一般用来做反向代理,也可以用来放静态htnl等文件..当然代理tcp协议也没啥问题,但做好是别用哈.性能不咋样. 虚拟主机 什么是虚拟主机? 个人理解,比如一台主机装一个ngi ...

  7. Nginx安装及配置虚拟主机

    nginx安装部分 依赖环境 yum -y install gcc zlib openssl-devel zlib-devel 1. 下载好下面两个包:nginx-1.8.1.tar.gz pcre- ...

  8. Nginx下配置虚拟主机的三种方法

    Nginx下,一个server标签就是一个虚拟主机. 1.基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2.基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的 ...

  9. Nginx 配置实例-配置虚拟主机

    Nginx 配置实例-配置虚拟主机 配置基于域名的虚拟主机 1. 配置域名为 aaa.domain.com 的虚拟主机 1.1 nginx 中虚拟主机的配置 1.2 相关目录及文件的创建 1.3 验证 ...

  10. nginx 配置虚拟主机

    文章转载自:http://www.ttlsa.com/html/1571.html 上篇说道我们的nginx是安装在/usr/local/nginx/ cd conf 我们现在把所有的虚拟主机放在一个 ...

随机推荐

  1. 基于DirectX11+ImGui的Win32桌面程序开发

    一.常见图形界面框架(DirectUI.GUI) 1.题外话,纯属扯O 举两个常用的开发框架,MFC和Qt Widget里面每个控件都是Window,这是和DirectUI最大的区别.下面简单梳理下这 ...

  2. 2023年郑州轻工业大学校赛邀请赛myh

    赛程回顾和赛后总结 赛程回顾 although 昨天刚复盘的,但还是记不住题号.就口胡下是那类型题吧. 刚开始时,我和队长先看的a,让jc去找签到题.我们看了下a,队长说可能dp,但还是感觉没啥思路就 ...

  3. ip2location.py

    import re import geoip2.database from tabulate import tabulate from matplotlib import pyplot as plt ...

  4. 原来ES7~12分别增加了这些属性呀

    ES6也称为ES2015,于2015年发布,此后每年都有新增一些属性,分别命名为ES7~12,发布的年份分别对应2016年到2021年 ES7 includes方法 数组中新增了includes方法, ...

  5. ES6之清楚明白的使用类(class)

    定义 类是构造函数.原型链的语法糖. 定义类有两种方式 class Student { } var Student = class { } 某些浏览器可能无法解析es6及以上的语法,这时候需要通过ba ...

  6. croc-文件传输工具

    前言 croc是一款用go语言开发的命令行文件传输工具,该工具允许两台计算机设备以一种简单和安全的方式来传输文件. GitHub项目地址 环境信息 IP 系统版本 croc版本 说明 192.168. ...

  7. Linux查看磁盘空间,文件系统、挂载

    Linux磁盘空间,文件系统.挂载 概述 在使用以下命令查看磁盘使用情况时 df -h du -sh 目标路径 作为初级开发者,Linux入门级选手,可能不禁要问Linux系统的文件系统跟window ...

  8. Java 设计模式实战系列—单例模式

    本文首发公众号:小码A梦 单例模式是设计模式中最简单一个设计模式,该模式属于创建型模式,它提供了一种创建实例的最佳方式. 单例模式的定义也比较简单:一个类只能允许创建一个对象或者实例,那么这个类就是单 ...

  9. c++中的宏#define用途

    宏的一些作用,包括但不限于这些 定义一个变量.字符串.类型 定义一个函数.条件表达式 条件编译.调试信息,异常类 定义结构体.命名空间 定义模版.枚举.函数对象 #define宏定义在C++中用于定义 ...

  10. 搭建Minio分布式服务

    本文主要介绍Minio的分布式环境搭建,安装比较简单,因博主只有一台window,所以使用VM虚拟机搭建的. 搭建前可以先了解下minio: 1.官方文档:https://docs.min.io/cn ...