当前位置: 首页 > news >正文

windows下使用nginx调试简介

安装使用

nginx是一个反向代理服务器,在web开发调试中经常用到,写一个简单的使用说明和总结。

1. 下载

点击官网下载地址 下载对应版本的nginx并解压

2. 配置

在解压的目录下找到conf/nginx.conf文件
添加所需监听和代理的server

# 项目名称
    server {
        listen       80;
        server_name  example.com;//监听的host

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_set_header host $host;
            proxy_pass   http://127.0.0.1:8092; // 要代理的地址
        }
    }

3. 常用命令

  1. start nginx // 启动nginx
  2. nginx -s stop // 快速停止nginx,可能并不保存相关信息
  3. nginx -s quit // 有序的停止nginx,并保存相关信息
  4. nginx -s reload // 重新载入配置,修改完配置文件后使用此命令重启

原理简析

在说明使用nginx的优点之前,先说说另一种常用的调试方案:修改hosts文件。
修改host的原理是:对主机添加特定dns解析规则,将指定域名解析至某个特定ip。例如:

在hosts文件里写了这么一行:127.0.0.1 example.com,接下来在浏览器输入www.example.com后:

  1. 主机检测hosts文件发现有对应规则(如果没有对应规则就走正常dns解析服务),于是向IP127.0.0.1:80(默认端口)发送http请求,请求报文上GET / HTTP/1.1,host:example.com
  2. 如果此时本地80端口确实启动了某个服务,则处理该对应的请求。

如果我们正好是在本地的80端口运行这个要调试项目,那自然没有问题。但是可能有意外情况:

  1. 本地项目不跑在80端口
  2. 要监听的host项目不在80端口,例如一般线上正式环境的项目使用的是https协议,请求默认端口就是443,

此时就需要nginx来解决问题,nginx的作用用一句话描述:将发送至特定host的请求转发到指定的代理地址上
举一个实际的例子,首先在hosts添加一行127.0.0.1 construct-courses.pre1.web.nd后,可以在浏览器看到这样的请求:
图片描述
首先看图上Grnrral部分的remote address字段,即前文的第一步骤完成,本地的80端口接收到一个http请求,host为construct-courses.pre1.web.nd
接着在nginx的配置文件中增加:

server {
        listen       80;
        server_name  construct-courses.pre1.web.nd;
        
        location / {
            proxy_set_header host $host;
            proxy_pass   http://127.0.0.1:8092;
        }
    }

在conf中配置如上图代码并启动nginx后,nginx检查到server_name construct-courses.pre1.web.nd接收到了请求,根据匹配规则,将请求转发到指定的 proxy_pass 即 http://127.0.0.1:8092上。至此,请求example.com实际变成了请求http://127.0.0.1:8092

在本地8092端口启动实际项目,就可以发现在浏览器访问construct-courses.pre1.web.nd时,运行的正是我们的实际项目

整个过程至此结束


惯例:如果内容有错误的地方欢迎指出(觉得看着不理解不舒服想吐槽也完全没问题);如果有帮助,欢迎点赞和收藏,转载请征得同意后著明出处,如果有问题也欢迎私信交流,主页有邮箱地址

相关文章:

  • Ajax 知识
  • 什么软件可以提取视频中的音频制作成手机铃声
  • TypeScript(ES6) 的一些使用的小技巧
  • git远程分支回退
  • 开源SQL-on-Hadoop系统一览
  • Terraform入门 - 3. 变更基础设施
  • 【刷算法】LeetCode-26.删除排序数组中的重复项
  • SpiderData 2019年2月16日 DApp数据排行榜
  • matlab-基础 矩阵 同时修改多个元素
  • micropython esp8266 烧录
  • SOFAMosn配置模型
  • GPU编程(五): 利用好shared memory
  • Systemd曝3漏洞,大部分Linux将受到***
  • VM虚拟机中fedora28 无法使用中文输入法问题
  • js常用通用函数(++++验证)
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 10个最佳ES6特性 ES7与ES8的特性
  • Java 内存分配及垃圾回收机制初探
  • JavaScript对象详解
  • Mac转Windows的拯救指南
  • vue-loader 源码解析系列之 selector
  • 给新手的新浪微博 SDK 集成教程【一】
  • 官方解决所有 npm 全局安装权限问题
  • 计算机在识别图像时“看到”了什么?
  • 理清楚Vue的结构
  • 七牛云假注销小指南
  • 什么软件可以剪辑音乐?
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • Nginx实现动静分离
  • 交换综合实验一
  • 说说我为什么看好Spring Cloud Alibaba
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 移动端高清、多屏适配方案
  • ​2021半年盘点,不想你错过的重磅新书
  • ​Linux·i2c驱动架构​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #includecmath
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (3)(3.5) 遥测无线电区域条例
  • (八)Flask之app.route装饰器函数的参数
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (多级缓存)缓存同步
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (九)One-Wire总线-DS18B20
  • (蓝桥杯每日一题)love
  • (转)C#调用WebService 基础
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)一些感悟
  • (转载)hibernate缓存