通过nginx将本地请求打到开发机上
现在的工作的由于环境的隔离,所以开发需要在开发机上进行开发。
本地调试时,如果希望将请求打到开发机上起的本地服务,在windows下可以通过fiddler来进行,但是在mac下由于不存在像fiddler般简单易用的软件,所以可以使用比如nginx来进行转发。
配置起来需要如下几部:
对于nginx来讲,配置文件中关键的内容有以下几点:
日志中的内建变量
这篇文章介绍的比较详细
Nginx的日志配置参数详解
转发的规则
具体的转发规则location我们就不赘述了,有很多文章介绍。
dns的问题
在我们的场景中,我们需要一个比较特殊的情况是:我们需要拦截某些请求到本地,而希望其他的请求继续走原始的路径。但是由于我们通过了配置hosts将域名打到了本地127.0.0.1,所以如果在proxy_pass中继续配置 http://crm-off.work-int.com 的话,由于仍会走本机的host,所以仍然会打到本机的nginx上。所以我们需要绕过本机的host的配置。为了解决这个问题,我们需要了解下nginx对于域名的解析规则。nginx在加载配置文件的时候,会将host加载到上下文中,然后对于配置文件中的域名会进行解析。而如果我们不希望进行该解析,则需要通过内置变量来进行。比如$http_host。这就是我们在上面的配置文件中看到了:
的原因。
以上的讨论,在文章 Nginx 教程二:利用nginx搭建静态文件服务、正向代理服务器、反向代理服务器 也有讨论,称之为正向代理,与反向代理所区别。可以理解为一个为出,一个为入。
但是,单纯的如此编辑后,仍然会存在问题,比如域名解析不出来等。此时我们需要配上域名解析器,也就是server模块:
那么有个问题就产生了,这个ip是如何产生的呢。
查找域名解析器
我们需要去查找我们的$http_host的dns服务器域名。这时候nslookup就出场了。
使用nslookup查找域名:
于是我们便获得了dns的服务器。实际如果访问的是公网的话,则直接填8.8.8.8,是Google提供的免费DNS服务器的IP地址。
其中stop和quit的区别在于quit是一种较平滑的退出。
如何配置Nginx
如果遇到 "Welcome to nginx!" 的问题,以下是一些详细的解决步骤:首先,确保你的浏览器已经正确配置。以360浏览器为例,按以下操作进行:1. 打开浏览器,找到右上角的图标,通常是一个小房子或者齿轮形状,点击进入设置。2. 在下拉菜单中,选择 "Internet选项",这将打开一个新的窗口。3. 在新的...
彻底搞懂nginx基本使用配置
com\/index.html)、匹配大小写敏感或忽略的正则表达式,或仅匹配以特定路径开头的uri。对于文件类型的匹配,如 gif、jpg、jpeg,只有匹配的文件才会成功。完整的nginx配置模板,如index.conf,包含了这些配置选项的组合,是实际应用中的关键组成部分。通过这些基础配置,你可以灵活地管理和控制nginx的行为。
nginx配置中 root能指定非本地的文件路径吗
从理论上将nginx的root只能制定本地的文件路径。nginx对与网络路径的指定一般都通过fast_cgi指令和proxy_pass来完成,这两个指令可以把请求转发给下游机器来实现网络通信。但是对于普通的root指令,理论上只能是制定本地文件路径。并且查看了下nginx的模块源码,发现在autoindex模块中文件定位的代码中存在如下...
为什么nginx开启了,本地可以访问,外网不可以
如果你是家庭网络,外网是不能通过 80 端口访问的,你需要更换其它端口,具体原因请网络查找:电信封锁80端口
打开网址出现403 Forbidden 怎么解决?
1.首先,打开控制面板,选择系统和安全。点击进入后,点击管理工具,进入管理工具界面。\/iknow-pic.cdn.bcebos.com\/37d3d539b6003af3af785319382ac65c1138b68d"target="_blank"title="点击查看大图"class="ikqb_img_alink">\/iknow-pic.cdn.bcebos.com\/37d3d539b6003af3af785319382ac65c1138b68d?x...
nginx为什么对本地请求不做缓存
在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。apache:首先确定配置文件httpd.conf中确已经加载mod_headers模块。LoadModule headers_module modules\/mod_headers.so 我们可以根据文件类型来让浏览器每次都从...
【实践】Vue 前端项目部署到Nginx服务器(Linux环境)
引言:Vue.js作为一种流行的前端框架,配合Nginx高性能的Web服务器,将Vue前端项目部署到Nginx服务器上,能够为用户提供快速可靠的访问体验。本文将详细介绍在Linux环境下如何实践将Vue前端项目部署到Nginx服务器的过程。前提条件:在开始之前,请确保以下条件已满足:1. 本地开发环境中已创建并测试了Vue前端...
linux虚拟机搭建了nginx服务器,为什么在本地浏览器打不开
如果是在虚拟机里搭建的,首先你要确认你的物理集合去辛集时保持网络连接的,然后确定你的心机的IP地址,然后访问一下试试。另外的话,你要保证你的软件服务启动了。
如何在本地浏览器访问nginx
1、打开vmware"编辑虚拟机"设置,点击“网络适配器”选择“桥联模式”:2、开启该虚拟机,输入用户名root及密码登陆服务器:3、以管理员身份打开cmd,在命令窗口输入ipconfig -all找到下图所示的几个参数:(1)IPv4 地址;(2)子网掩码;(3)默认网关;(4)DNS服务器;4、回到虚拟机,在命令窗口...
如何让nginx实现手机能访问本地代码的功能
nginx里配置的是主机地址,而不是域名服务器 如需测试域名,请修改host文件 如需让别人能访问你的域名,需要购买域名 跟配置nginx无关系
闳峡卡地: 方法 1. nginx增加配置 proxy_set_header X-Real-IP $remote_addr; more.. http://wiki.nginx.org/NginxHttpProxyModule 2.tomcat 设置使用请求头 %{X-Real-IP}i 在 pattern 参数里面 more… http://www.docjar.org/docs/api/org/apache/catalina/valves/AccessLogValve.html 3.如果没有转发那就直接%a或者%h就可以做到了记录真实ip了,不过还是推荐使用设置请求头参数.
掇刀区17010888871: nginx怎么把来自80端口的请求交给8080 - ?
闳峡卡地: 把本机口的请求转发到本机8080端口代码:ip packet based :echo 1 > /proc/sys/net/ipv4/ip_forward iptables -I PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080
掇刀区17010888871: nginx如何处理一个请求 - ?
闳峡卡地: Nginx首先选定由哪一个虚拟主机来处理请求.让我们从一个简单的配置(其中全部3个虚拟主机都在端口*:80上监听)开始:server { listen 80; server_name example.org www.example.org; ... }server { listen 80; server_name example.net www....
掇刀区17010888871: nginx 将请求代理到后台特定的服务器 怎么实现 - ?
闳峡卡地: 既然url中有关键字,然后根据关键字做转发好了 直接location 正则匹配,然后代理到特定机器
掇刀区17010888871: 如何从一个nginx的http请求中获取server端地址 - ?
闳峡卡地: 在处理一个http请求的时候,很少会使用到本地地址,所以nginx为了节省这段空间,故默认不初始化本地地址,而是在具体需要的时候,再通过提供的接口去主动获取,这样一来节省了空间,又在需要的时候能够快速的获取.这是一个不错的折中.
掇刀区17010888871: nginx会不会造成1个请求发送到多台主机的情况 - ?
闳峡卡地: 我是没有具体的文档数据证明,但凭我多年使用nginx的理解,是不是出现这个情况的.一个请求他就只转发给一个后端,连接不到或者出错就直接返回502 403 等 ,接着等待下一个请求. 像你这种情况,很多情况下是客户端提交按钮多次被按到.解决办法一般前端都要做一个控制,post的时候要把按钮disable掉.还有就是php层面做一个防重复提交的控制,通常用token. 还有一点就是数据库的优化,有时写锁就会造成排队,客户端等着不反应就提交多几下.
掇刀区17010888871: nginx 能转发那些请求? - ?
闳峡卡地: nginx做的反向代理是七层应用层进行的转发,不存在你说的tcp,udp转的,那是网络层做的事情.你可以先学习七层网络结构.nginx书你可以看张宴席的《实战nginx》
掇刀区17010888871: nginx access log 怎么直接输出到log服务器 - ?
闳峡卡地: 动互联网行业开发过程中,服务端经常会需要检查是否收到请求,收到什么样的请求,最简单的办法就是看nginx的access log,常见的nginx配置中access log一般都只有GET请求的参数,而POST请求的参数却不行.$request_bodyThis ...
掇刀区17010888871: NginX反向代理,A机得到用户请求后,用proxy - pass B机,B机返回HTML是直接发往浏览器呢?还是有经过A机? - ?
闳峡卡地: proxy_pass是代理指令 也就是说,浏览器请求发到Nginx后,Nginx把请求转发到目的服务器,然后在把目的服务器返回的内容再传回给浏览器 整个过程中浏览器与B都是不进行任何直接通讯的,所有通讯都是通过Nginx服务器间接通信,B可以处于与Nginx同一内网下,B都可以链接不了外网,只由Nginx(DMZ区)将请求发给B,B将结果再给Nginx
掇刀区17010888871: nginx 只能访问本地文件吗 - ?
闳峡卡地: nginx可以作为代理网关服务器 它也可以向其他服务器或服务提供方转发请求,并返回结果,不一定是本地的文件 另外,还可以直接返回设定好的短小响应,不需要有真实文件