目录

nginx虚拟主机配置

nginx虚拟主机配置

一.nginx虚拟主机的组成

https://i-blog.csdnimg.cn/direct/ba003df411314087aa510158494030b9.png

在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.为虚拟主机指定单独的访问日志

https://i-blog.csdnimg.cn/direct/c7209f17d4ab47afa76af79a912e1557.png

如上图所示,这里的access_log的指定路径,就是这个虚拟主机的访问日志,

4.location的配置

location  uri地址{

…..

}用来写客户端的响应

什么是url地址?

https://i-blog.csdnimg.cn/direct/4eb71a6977c248c9b6558b5db2c5fc8c.png

如上图所示,这是url地址,第一部分是协议,第二部分是主机名,第三部分是这个客户端要访问机器上的哪个文件名。

什么是uri地址?

就是第三部分,也就是客户端要访问机器上的文件地址。

如果能匹配到对应的uri地址,就会按照location中的配置去给客户端响应。

https://i-blog.csdnimg.cn/direct/4d4d783241014983b8279338eef603dc.png

如上图所示,这是一个location最简单的写法。

location接收到客户端请求后使用html目录中的index.html首页给客户端响应。

nginx使用服务器本地的文件给客户端响应

https://i-blog.csdnimg.cn/direct/777c43d60e714f789d9be67b0a4a8387.png

如上图所示,这是左斜杠对应的是服务器的网页目录,数据目录。

https://i-blog.csdnimg.cn/direct/cc8be86541c249bcbb7dc9b21bb063b5.png

https://i-blog.csdnimg.cn/direct/46fc916e2a124d8683cc74f5276b448a.png

https://i-blog.csdnimg.cn/direct/18e024dd045c4cbdbd90096a9ce01217.png

如上图所示,修改这个location的网页目录为我们新创建的/test1,并且让nginx重新识别配置文件。

https://i-blog.csdnimg.cn/direct/c95b33211d9e4be88fd683a67a701277.png

如上图所示,现在有一个需求,要求客户端能够访问机器的192.168.183.10/test2目录,

https://i-blog.csdnimg.cn/direct/32fa96f20a394a46b30c190f34066d76.png

如上图所示,这是nginx主配置文件中的location

https://i-blog.csdnimg.cn/direct/78a8235eea0447009bcab080ee04e64f.png

如上图所示,随后重新加载配置文件,

https://i-blog.csdnimg.cn/direct/44620cbbb71c45228ec9223294d66dbc.png

如上图所示,显示404错误,也就是说文件找不到,服务器接收到了对应的请求,但是找不到对应的文件响应。

https://i-blog.csdnimg.cn/direct/93f4f157727f4e639bf85acfd9917334.png

如上图所示,我们去看nginx的错误日志,error.log日志,

https://i-blog.csdnimg.cn/direct/03a7a472b526421e99cbcc141265f768.png

如上图所示,我们知道location后面的斜杠是网页目录地址,而root后面指定的是网页目录地址,所以当用户访问192.168.183.10/test2的时候,实际访问的是192.168.183.10的/web/test2/test2目录,但是实际上没有这个目录,就更别提使用这个目录下的网页文件给客户端进行响应。

https://i-blog.csdnimg.cn/direct/018228d63b8b4b6abe425582d5f29d45.png

如上图所示,如果想让客户端正确访问/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的主配置文件中,也可以创建一个目录,针对不同的虚拟主机,创建不同的虚拟主机配置文件。

https://i-blog.csdnimg.cn/direct/30b6a472ad3b4aa480ee4b5186b9df99.png

https://i-blog.csdnimg.cn/direct/39931317bef641adb9da0eec0a2fd5ad.png

如上图所示,需要在nginx.conf文件中添加上这样一条配置,这样nginx才能加载虚拟主机的配置文件。即加载我们创建的虚拟主机配置文件目录下所有以conf结尾的文件。

https://i-blog.csdnimg.cn/direct/ebb6e367c2944adba3b40b163ff441bc.png

如上图所示,我们去检测nginx配置文件的语法是否有问题,当配置文件的语法没有问题的时候,我们去重新加载这个配置文件中的配置。

python.linux.com配置

https://i-blog.csdnimg.cn/direct/81fe69b41a0f4fad8377e5811132db16.png

如上图所示,这是python虚拟主机的配置。我们在创建的虚拟主机的配置目录下新创建了文件python.conf

https://i-blog.csdnimg.cn/direct/c62c3a862457439c98dfa679fba49c0a.png

如上图所示,这是这个虚拟主机的数据目录,随后我们去检测配置主配置文件中是否有语法错误,随后我们去让nginx重新识别配置文件中的内容。

https://i-blog.csdnimg.cn/direct/f5ad02567e494fef80626b4802455b48.png

如上图所示,这是在本地机器上添加主机名解析,实现本地访问虚拟主机地址。

基于IP地址的虚拟主机

案例:基于https协议的虚拟主机

   /data/www

1.配置CA服务器

https://i-blog.csdnimg.cn/direct/44d48c2f927c4fd386d32bf0c75f29da.png

创建记录证书序列号的文件

创建CA服务器的密钥对

创建CA服务器的自签证书

https://i-blog.csdnimg.cn/direct/0d8e108f46f942e0812b9a9722cc9f8e.png

2.为网站生成密钥,申请证书

https://i-blog.csdnimg.cn/direct/0a30e8dd6613458ab435a131f560b7f4.png

当证书创建好之后,需要我们把证书拷贝给CA服务器,让CA服务器来签署证书。

https://i-blog.csdnimg.cn/direct/54fe36b06fa648dea850ab724edcbcb3.png

如上图所示,这是我们在CA服务器上签署好的证书,随后我们将这个签署好的证书拷贝给网站服务器。

https://i-blog.csdnimg.cn/direct/8d8718550b8741ca80721407def076b4.png

如上图所示,这是将签署好的证书拷贝给网站服务器的操作,

https://i-blog.csdnimg.cn/direct/a389a562a7b64b608a81d333412bc4bf.png

如上图所示,这是在网站服务器上需要创建加密网站时候需要的www.key,www.crt证书,www.csr证书,

随后我们就可以去配置加密的虚拟主机了。

https://i-blog.csdnimg.cn/direct/426221b05bfc438ca4c6ba7bc6650b72.png

如上图所示,这是在ngixn.conf文件中nginx软件为我们提供的一个加密虚拟主机的案例。

一种方式是单独创建一个子配置文件,来创建加密虚拟主机的配置文件,一种方式是去掉注释,然后直接在此基础上去做修改,

3.编辑nginx加密虚拟主机的配置文件

https://i-blog.csdnimg.cn/direct/88ef17c87f4d4ac19126c96fc3189e48.png

如上图所示,这个加密的虚拟主机监听的是https协议的443端口,这个虚拟主机名是www.linux.com

随后指明证书的存放路径以及密钥的存放路径。

ssl会话的缓存

ssl会话的保存时间

随后是location中指明虚拟主机的网页目录,

https://i-blog.csdnimg.cn/direct/a7a7aa67ed054714b1f4ade7ff21ee32.png

如上图所示,这是创建对应的网页目录,随后创建对应的测试首页,

检测配置文件语法,

使得nginx软件重新读取配置文件,

当nginx的这个加密虚拟主机启动的时候,会默认监听tcp协议的443端口

4.测试访问

https://i-blog.csdnimg.cn/direct/806add45b1cf4e618611e37ca26fb8ce.png

如上图所示,在访问的时候,不需要写443端口,直接手写https://linux.com即可。