Linux记录14-4.32,4.33 nginx虚拟主机、本地hosts文件配置本地域名解析、

虚拟主机:

就是一个服务器上可以有多个虚拟主机,在 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 窗口里。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值