Nginx的配置以及几个实验

实验目的:加深对nginx的配置的了解

首先nginx的配置文件结构如下:

 

 

 nginx.conf由多个块组成,最外面的块是main,main包含Events和HTTP,HTTP包含upstream和多个Server,Server又包含多个location:

main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)【打开nginx配置文件可以详细的看】

实验一:Nginx状态统计

实现效果:请求http://IP/nginx_status返回nginx的已经处理的连接数、成功的TCP握手次数、已经处理的请求数【关于他们的区别,在博文https://www.cnblogs.com/ysd-jxt/p/13716138.html中有提到】

a、安装nginx时,将 --with-http_stub_status_module模块开启

b、修改nginx配置文件(写入要访问的server标签中)【修改之前要将配置文件进行备份】

location /nginx_status{//location前面说了,一个server中可以有多个location,而location的作用就是匹配网站的url

  sub_status on;

  access_log off;

}

c、重启nginx系统

 使用-t参数看配置的是否正确

   

   pkill -HUP nginx

   

 

 

 d、查看效果

  

 

 

 实验二:对/下的某个域名进行保护【和apache一样使用http的htpasswd命令进行处理】,本次对nginx的nginx_status目录进行保护。

  a、在匹配状态统计nginx_status中的url的location中增加,如下信息

auth_basic "Welcome to nginx_status!";
auth_basic_user_file /usr/local/nginx/html/htpasswd.nginx;

  b、使用http的命令htpasswd进行用户密码文件的创建(生成在上面指定的位置)

 

 

   c、使用http的命令htpasswd进行用户密码文件的创建

#htpasswd -c /usr/local/nginx/html/htpasswd.nginx user
-t查看nginx的语法错误
重启nginx
pkill -HUP nginx

       d、访问http://192.168.109.2/nginx_status页面,会提示你需要输入密码

实验三:对某个目录进行ip访问控制,有允许和拒绝,我们做拒绝192.168.109.4进行访问或者只允许192.168.109.4进行访问【该ip地址为我虚拟机VMnet8的地址】

  a、在匹配状态统计nginx_status中的url的location中增加如下信息

allow 192.168.109.4;
deny xxxxxxxx;

    

 

 

   b、-t查看配置是否正确,重启配置

   c、查看效果

  

 

 

 实验四【重要】:nginx虚机主机【基于域名】

使用场景:有两个网站的程序,域名不同,但是代码放到一起了,我希望可以用某一个端口正常访问

     a、提前准备好两个网站的域名,我们先姑且称之为www.go.com、www.php.com,且他们的代码目录分别为go、php

 

 

 

 创建两个项目文件

     b、在Nginx中配置两个Server,配置域名以及项目代码

  

 

 

在项目下面写了一个php代码进行验证,如图:

 

 

 访问浏览器结果如图:

 实验五:反向代理

目标:1、需要理解概念,什么是反向代理

    2、理解反向代理的架构布局有哪些

            3、具体的操作【我们之前在192.168.109.7机器中安装了apache服务】

        什么是反向代理?

        答:nginx作为一个请求转发器,将请求转发给上游服务器,例如Apache服务器

  反向代理的布局:

 

 

 

 

 

 如何配置反向代理服务器?

在location中增加如下内容:

在nginx服务器的配置文件中添加(写在某一个网站的server标签内)
location / 
{
    proxy_pass http://192.168.88.100:80;#此处填写apache服务器的IP地址
}

  实际需求:我需要将www.php.com中的所有的请求反向代理到我们的Apache服务器上面,应该怎么办?

a、设置nginx配置文件中的server中的location内容,增加proxy_pass 上游服务器的地址,如图所示

 

 

b、-t查看语法信息。重启nginx

c、进行nginx日志以及apache日志查看

 

 

 可见nginx确实将请求转发给了apache,apache的网站根目录下面没有部署相应代码所以就返回404。

有一个疑问,既然nginx作为代理服务器为什么不是301或者302的状态码呢?

301在什么请求下会产生????这个问题还是解决不了

 

实验6:

 

 

 

   

posted @ 2020-09-24 02:17  洛飞  阅读(304)  评论(0编辑  收藏  举报