Nginx的请求转发、静态资源访问示例

疯一样的男子
疯一样的男子
发布于 2022-08-04 / 9 阅读
0
0

Nginx的请求转发、静态资源访问示例

一、nginx相关命令

在nginx.exe的目录下执行命令

启动:

  nginx -s start	

关闭:

  nginx -s stop

二、先了解location 的alias 和root 参数的区别

  1. 若按照以下配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件

  location /img/ {
	  alias /var/www/image/;
  }
  1. 若按照以下这种配置的话,则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件

  location /img/ {
	  root /var/www/image;
  }

三、普通转发请求相关示例

在nginx.conf文件的server 中新增代码,localhost配置为root方式。

访问localhost:端口号/文件名的请求时会指向C:/video/目录下的文件,但是如果路径为localhost:端口号/test/文件名是会指向C:/video/test/目录下的文件,这点要注意,下面有说明

  location ~ .*\.(gif|jpg|pdf|jpeg|png|bmp|mp4)$ {  
	  	  #root D:/nginx-1.15.5/temp/images/;#指定图片存放路径(可以放在nginx文件夹路径里也可以放其他p盘) 
		  root C:/video/;           
		  }

如图:

  1. 修改nginx.conf文件

  1. 查看需要转发的资源文件是否存在对应的存放位置

  1. 访问对应的链接

四、localhost配置为alias方式

访问/test开头的请求时会指向D:/uploadExcel/目录下的文件

  location /test/ {
              alias D:/uploadExcel/;
              allow all;
              autoindex on;
          }

五、正则匹配转发请求相关示例

  1. 该localhost会匹配 以/test开头,以 *.指定后缀名的请求,该请求会寻找 D:/uploadExcel/test/目录下的文件,其实就是root的路径加上了请求的路径形成了请求实际访问的文件地址。

  location ~ /test/(.*\.(gif|jpg|pdf|jpeg|png|bmp|mp4|xlsx))$ {  
			  root D:/uploadExcel/; 
		  }
  1. 该localhost会匹配 以/test4开头,以 *.指定后缀名的请求,该请求会寻找 D:/uploadExcel/目录下的文件,alias 区别与root,它不会加上请求的路径作为实际访问的地址,$1表示正则表达式中的第一个括号内匹配的内容

  location ~ /test4/(.*\.(gif|jpg|pdf|jpeg|png|bmp|mp4|xlsx))$ {  
			  alias D:/uploadExcel/$1; 
		  }

六、以指定路径转发请求相关示例

  1. 该localhost会匹配 以/nps-api/开头的请求,该请求转发请求到http://47.xxx.xxx.91:60004/路径下,同时转发时会去除/nps-api路径,如请求http://localhost:8088/nps-api/membersadmin/looktestListerprise?IMGID=01,该请求相当于请求http://47.xxx.xxx.91:60004/membersadmin/looktestListerprise?IMGID=01。(需要开启对应的防火墙端口如443,如果是云服务器还需要再对应厂商服务器安全组或防火墙中打开,检查域名或IP端口是否打开可使用以下在线工具检测:http://coolaf.com/tool/port)

          location /nps-api/ {
              proxy_set_header Host $proxy_host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header REMOTE-HOST $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_pass  http://47.xxx.xxx.91:60004/;
        }

  1. 根据路径动态匹配转发端口,(\d+)表示一个捕获组,\d表示匹配一个数字字符,+表示匹配一个或多个数字字符。因此,(\d+)会匹配一个或多个连续的数字字符。动态变量$dynamic_port。该localhost会匹配 以/dynamic-nps-api/(\d+)开头的请求,该请求转发到http://47.xxx.xxx.91:$dynamic_port/路径下,根据路径动态选择端口,同时使用rewrite去除/dynamic-nps-api/(\d+)/路径,如请求http://localhost:8088/dynamic-nps-api/60001/membersadmin/looktestListerprise?IMGID=01,该请求相当于请求http://47.xxx.xxx.91:60001/membersadmin/looktestListerprise?IMGID=01,请求http://localhost:8088/dynamic-nps-api/60004/membersadmin/looktestListerprise?IMGID=01,该请求相当于请求http://47.xxx.xxx.91:60004/membersadmin/looktestListerprise?IMGID=01。(需要开启对应的防火墙端口如443,如果是云服务器还需要再对应厂商服务器安全组或防火墙中打开,检查域名或IP端口是否打开可使用以下在线工具检测:http://coolaf.com/tool/port)

          location ~ ^/dynamic-nps-api/(\d+) {
                  set $dynamic_port $1;
                  rewrite ^/dynamic-nps-api/(\d+)(.*)$ $2 break;
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header REMOTE-HOST $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                  proxy_pass http://47.xxx.xxx.91:$dynamic_port;
          }


评论