虚拟主机:
就是一个服务器上可以有多个虚拟主机,在 HTTP 相关的概念里就是host (域名)
HTTP1.1以后一个WEB服务可以有多个站点,一个站点就是一个虚拟主机
(在最开始,一个服务器跑了一个nginx就只能有一个域名,如果需要起一个新的域名就需要起一个新的nginx服务)
在nginx.conf配置文件里(yum安装的nginx)
红色,include的文件就是虚拟主机所有配置文件
查看有个default.conf
每一个server都是一个虚拟主机
listen 是监听端口
server_name 是域名
一个站点需要对应一个域名和一个目录,/usr/share/nginx/html 就是这个站点所在的目录
index 是索引意思
直接输入IP地址就可以访问,但是目前无法显示,原因是80端口没有通
怎么检测80端口是否通了呢?
windows里面就是在cmd下使用 telnet 192.168.222.128 80 可以测试
(如果没有加载telnet命令需要去开放)
linux下也是使用telnet命令,如果没有就yum安装一下
测试发现端口不通,很大可能是因为防火墙
CentOS7自带firewalld服务,默认开启状态,因此80端口需要添加到白名单,或者关闭防火墙
iptables -nvL 查看防火墙命令规则
不建议关闭,但是想排除防火墙影响可以直接 关闭防火墙 systemctl stop firewalld
打开防火墙 是 systemctl start firewalld
关闭防护墙后, telnet 80 端口是connected 已通
重新用IP登陆,成功显示网页
这里还不通的话检查下nginx服务是否在线,ping一下网络是否通的。
firewall-cmd --add-port=80/tcp
临时增加防火墙的一个80端口
firewall-cmd --add-port=80/tcp --permanent
永久增加防火墙的一个80端口,还要加一个 --permanent
这样就成功加入了白名单,但是因为防火墙没有重启并没有生效,reload 重载
firewall-cmd --reload
再次访问 IP ,可以看到网页了。如果还不行,ps检查下有没有nginx进程,没有设自启动,服务器重启后是没有nginx服务的
每个虚拟主机就是一个站点,每个站点应该要有一个域名
之前用的IP直接访问,其实IP就是域名解析的结果
现在用nginx为IP指定一个域名
进入 default.conf 配置文件 ,把 server_name 中 localhost 改为 www.lwj.com
nginx -t 检测是否有错误 (要使用nginx可执行程序)
nginx -s reload 重载配置。 没有报错就是成功
systemctl restart nginx 可以重启nginx
重启也可以达到同样效果,但尽量用重载不用重启,因为如果已经有人正在访问服务器,重启就会中断进程,重载不会。
现在这个域名www.lwj.com 还并没有指向到我们的IP上,需要DNS验证才能解析到我们想要的IP上
随意ping一下域名不是我们的IP
配置本地域名解析:
可通过改本机的hosts文件,引导本机解析域名。(但只在本机有效)
linux 路径: /ect/hosts
windows 路径:c/windows/System32/drivers/etc/hosts (可能需要增加管理员权限)
在hosts文件中写上域名和IP地址
再ping一次,域名解析过来的IP已经对了,解析的就是我们设定的IP
在windows下也可以改:
记事本打开,添加上IP和域名,保存
win中启动 cmd 是 窗口 + R 调出运行,运行中输入cmd,启动
cmd中ping一下,同样成功了
本地用浏览器也能通过这个域名访问到我们的服务器
默认虚拟主机的定义:
一个server_name就是一个虚拟主机。
同一个IP可以被多个域名解析。
也就是,换别的域名也能访问到这个IP,只要这个域名能被正确的解析到这个IP 。
但注意,nginx.conf 里也可以配置不同域名指引访问到同一服务器不同的页面,
NGINX配置文件中没有找到对应域名(server_name)的配置,才会走默认虚拟主机。
就是,只要是解析到这个服务器 IP上,没有在nginx配置文件中被指定server_name的所有域名,都会访问默认虚拟主机的配置。
这里 nginx.conf 中没配置 www.qwt.com ,那么www.qwt.com 域名解析到这个IP,就会找这个IP下的默认虚拟主机。也就是www.lwj.com的配置
虚拟主机的认定:
在conf.d配置里面暂时只有这一个主机(yum安装情况),主机配置名字其实可以随便改的,虽然叫default但是不一定就是默认虚拟主机。default命名的主机名字和默认主机没有必然关系。
拷贝一个主机配置文件做测试
这种情况下 排序在前的配置文件会被当成默认虚拟主机
这里 2.conf 会被当成默认主机。
这种靠排序认定默认虚拟主机的方式并不靠谱!
设定默认主机方式:
在.conf配置文件的监听端口后加上 default_server ,这个配置文件的主机就成为了默认虚拟主机
设置默认虚拟主机以后,只要是解析到这个服务器IP上,没有被指定为server_name的所有域名,都会访问default_server的配置。
在nginx配置文件上设置一个访问其他指定页面的虚拟主机:
打算用www.abc.com 这个域名。
首先要把这个域名也解析到这个IP。
新定义一个虚拟主机名 server_name www.abc.com
分配一个给 www.abc.com的 root 路径 /tmp/html
(一个虚拟主机至少要有 server_name 和 root)
给 www.abc.com 在指定路径下写一个 index.html
浏览器登陆 www.abc.com 可以显示出我们定义的内容
默认虚拟主机最重要的作用 范解析 :
范解析是相当多的域名解析过来都可以访问到同一个IP地址,而不用每个域名逐个去配置。
但是这样的话只要设置域名解析到我们的IP就能访问服务器(就好像在windows里hosts设置的www.qwt.com,这个在linux的主机里并没有设置)。
这导致任何设置了解析到这个IP的域名都能访问到服务器。
这个功能好用但是有安全风险。
禁止泛解析:
在配置文件中 deny all
这样,只有配置文件定义了的sever_name 域名的可以被访问的到。(www.lwj.com 和 www.abc.com )
而之前 www.qwt.com则变成了403,无法访问 。(虽然www.qwt.com能解析到服务器IP)
虚拟主机配置文件 用 域名 作为 虚拟主机配置文件的名字,这样易于区分
新建一个域名的对应配置文件
windows 中hosts文件记事本打开,因为是在自己电脑里的hosts里面设置了解析,所以也只能是自己访问,别人访问不了这个网站,因为别人的DNS上没有这个域名的解析。
直接ping域名是能通的,但是nginx –t 错误检测不会通过,因为这个配置文件是cp 2.conf得来的,那个已经定义了一个一样的域名www.ccc.com了,还没有修改成新的blog.aminglinux.cc导致域名冲突。
修改一下新的配置文件
域名修改成对应的:
charset 定义的是一个字符集
下面网页源码中的 utf-8 就是一个字符集编码
access_log 是访问日志
location
定义一下root的路径,也就是网站放在哪里?
这样定义路径也是为了方便找到这个站点
ctrl + z 暂停下vi编辑,先出去命令行 mkdir 一下刚设置的站点的root路径,设置完路径以后再 fg 返回vi继续编辑。
index需要加上php,因为打算做的博客是需要php而不是html
需要把PHP的相关#注释的去掉,刚去掉以后如下:
fastcgi_pass,当时测试PHP监听的地址就是127.0.0.1 : 9000
这个PHP的root路径是定义你PHP所在的路径,改成与location的root路径一样就好。
fastcgi_param 的路径也要改成一样
没用的#可以删除
-t 检错, -s 重新加载
需要把网站程序wordpress放到之前设的root目录下
wordpress 是用PHP语言开发的一个博客平台
wordpress官网下载
去下载 .tar.gz 格式的在linux上用的
放到路径下,用wget下载
解压
解压完成以后,把所有 wordpress/* (word里面的所有文件 ) 都移动到 ./ (当前目录下)
* 就是所有文件意思
./ 就是当前目录
移动后是这样:
然后把旧的wordpress目录(里面已空)和wordpress-5.0.2这个安装包删掉
剩下:
这时候我们输入blog.aminglinux.cc就进入了也要wordpress安装的页面
(有时候打不开是因为 SELINUX没有关闭)
(如果用linux ping不到可能是因为没有写入hosts , 地址是 /etc/hosts )
总结:
快捷键
ctrl + z 暂停一个进程。比如:vi的时候,可以先退出vi,然后释放命令行出来运行别的命令,运行完以后再返回vi。
按fg就可以回到vi 窗口里。