nginx虚拟主机配置
nginx虚拟主机配置
一.nginx虚拟主机的组成
在http这个大括号里面一对server的配置就是一个虚拟主机,在server里面不同的location代表不同的客户端访问请求,在location的大括号里面可以去写不同的配置,整个location的作用就是用来匹配不同的客户端请求,而大括号里面的就是针对不同客户端不同的响应方式。
nginx配置文件中自带的虚拟主机,
1.指定监听地址以及端口,
listen 80;
listen IP:port 【更具体的,这个虚拟主机,监听在我192.168.183.10的80端口上】
2.指定网站的名字
server_name shell.linux.com linux.com
如上所示,这个网站的名称有这两个,客户通过这两个网站名都可以访问我这个网站。
3.为虚拟主机指定单独的访问日志
如上图所示,这里的access_log的指定路径,就是这个虚拟主机的访问日志,
4.location的配置
location uri地址{
…..
}用来写客户端的响应
什么是url地址?
如上图所示,这是url地址,第一部分是协议,第二部分是主机名,第三部分是这个客户端要访问机器上的哪个文件名。
什么是uri地址?
就是第三部分,也就是客户端要访问机器上的文件地址。
如果能匹配到对应的uri地址,就会按照location中的配置去给客户端响应。
如上图所示,这是一个location最简单的写法。
location接收到客户端请求后使用html目录中的index.html首页给客户端响应。
nginx使用服务器本地的文件给客户端响应
如上图所示,这是左斜杠对应的是服务器的网页目录,数据目录。
如上图所示,修改这个location的网页目录为我们新创建的/test1,并且让nginx重新识别配置文件。
如上图所示,现在有一个需求,要求客户端能够访问机器的192.168.183.10/test2目录,
如上图所示,这是nginx主配置文件中的location
如上图所示,随后重新加载配置文件,
如上图所示,显示404错误,也就是说文件找不到,服务器接收到了对应的请求,但是找不到对应的文件响应。
如上图所示,我们去看nginx的错误日志,error.log日志,
如上图所示,我们知道location后面的斜杠是网页目录地址,而root后面指定的是网页目录地址,所以当用户访问192.168.183.10/test2的时候,实际访问的是192.168.183.10的/web/test2/test2目录,但是实际上没有这个目录,就更别提使用这个目录下的网页文件给客户端进行响应。
如上图所示,如果想让客户端正确访问/web/test2/目录下的网页文件的话,就需要把网页目录修改为/web,这样当用户再次访问网页/web/test2的时候,就是访问的是/web/test2/index.html
所以我们通过上述得知,location后面的不是什么绝对路径,而是uri地址,最开始的左斜杠是代指的网页目录。
案例:nginx虚拟主机配置
类型:
基于名称的虚拟主机
shell.linux.com /data/shell
python.linux.com /data/python
基于IP地址的虚拟主机
shell.linux.com配置
针对虚拟主机的配置可以写在nginx.conf,这个nginx的主配置文件中,也可以创建一个目录,针对不同的虚拟主机,创建不同的虚拟主机配置文件。
如上图所示,需要在nginx.conf文件中添加上这样一条配置,这样nginx才能加载虚拟主机的配置文件。即加载我们创建的虚拟主机配置文件目录下所有以conf结尾的文件。
如上图所示,我们去检测nginx配置文件的语法是否有问题,当配置文件的语法没有问题的时候,我们去重新加载这个配置文件中的配置。
python.linux.com配置
如上图所示,这是python虚拟主机的配置。我们在创建的虚拟主机的配置目录下新创建了文件python.conf
如上图所示,这是这个虚拟主机的数据目录,随后我们去检测配置主配置文件中是否有语法错误,随后我们去让nginx重新识别配置文件中的内容。
如上图所示,这是在本地机器上添加主机名解析,实现本地访问虚拟主机地址。
基于IP地址的虚拟主机
案例:基于https协议的虚拟主机
/data/www
1.配置CA服务器
创建记录证书序列号的文件
创建CA服务器的密钥对
创建CA服务器的自签证书
2.为网站生成密钥,申请证书
当证书创建好之后,需要我们把证书拷贝给CA服务器,让CA服务器来签署证书。
如上图所示,这是我们在CA服务器上签署好的证书,随后我们将这个签署好的证书拷贝给网站服务器。
如上图所示,这是将签署好的证书拷贝给网站服务器的操作,
如上图所示,这是在网站服务器上需要创建加密网站时候需要的www.key,www.crt证书,www.csr证书,
随后我们就可以去配置加密的虚拟主机了。
如上图所示,这是在ngixn.conf文件中nginx软件为我们提供的一个加密虚拟主机的案例。
一种方式是单独创建一个子配置文件,来创建加密虚拟主机的配置文件,一种方式是去掉注释,然后直接在此基础上去做修改,
3.编辑nginx加密虚拟主机的配置文件
如上图所示,这个加密的虚拟主机监听的是https协议的443端口,这个虚拟主机名是www.linux.com
随后指明证书的存放路径以及密钥的存放路径。
ssl会话的缓存
ssl会话的保存时间
随后是location中指明虚拟主机的网页目录,
如上图所示,这是创建对应的网页目录,随后创建对应的测试首页,
检测配置文件语法,
使得nginx软件重新读取配置文件,
当nginx的这个加密虚拟主机启动的时候,会默认监听tcp协议的443端口
4.测试访问
如上图所示,在访问的时候,不需要写443端口,直接手写https://linux.com即可。