nginx域名如何定位到项目的某个目录下

nginx域名如何定位到项目的某个目录下,第1张

server {

listen       80 default_server;

server_name  testexamplecom;

root F:/web;

access_log  logs/accesslog  main buffer=1024k;

}

Nginx 设置三个域名在同一目录下:

server {

listen 80 ; 

server_name http://acom http://bcom http://ccom ; 

location / { 

root /home/website ; 

if ($host = "http://acom"){

set $index indexhtml ; 

}

if ($host = "http://bcom"){

set $index indexphp ; 

}

if ($host = "http://ccom"){

set $index defaultphp ; 

}

index $index ;

}

}

现在的工作的由于环境的隔离,所以开发需要在开发机上进行开发。

本地调试时,如果希望将请求打到开发机上起的本地服务,在windows下可以通过fiddler来进行,但是在mac下由于不存在像fiddler般简单易用的软件,所以可以使用比如nginx来进行转发。

配置起来需要如下几部:

对于nginx来讲,配置文件中关键的内容有以下几点:

日志中的内建变量

这篇文章介绍的比较详细

Nginx的日志配置参数详解

转发的规则

具体的转发规则location我们就不赘述了,有很多文章介绍。

dns的问题

在我们的场景中,我们需要一个比较特殊的情况是:我们需要拦截某些请求到本地,而希望其他的请求继续走原始的路径。但是由于我们通过了配置hosts将域名打到了本地127001,所以如果在proxy_pass中继续配置 http://crm-offwork-intcom 的话,由于仍会走本机的host,所以仍然会打到本机的nginx上。所以我们需要绕过本机的host的配置。为了解决这个问题,我们需要了解下nginx对于域名的解析规则。nginx在加载配置文件的时候,会将host加载到上下文中,然后对于配置文件中的域名会进行解析。而如果我们不希望进行该解析,则需要通过内置变量来进行。比如$http_host。这就是我们在上面的配置文件中看到了:

的原因。

以上的讨论,在文章 Nginx 教程二:利用nginx搭建静态文件服务、正向代理服务器、反向代理服务器 也有讨论,称之为正向代理,与反向代理所区别。可以理解为一个为出,一个为入。

但是,单纯的如此编辑后,仍然会存在问题,比如域名解析不出来等。此时我们需要配上域名解析器,也就是server模块:

那么有个问题就产生了,这个ip是如何产生的呢。

查找域名解析器

我们需要去查找我们的$http_host的dns服务器域名。这时候nslookup就出场了。

使用nslookup查找域名:

于是我们便获得了dns的服务器。实际如果访问的是公网的话,则直接填8888,是Google提供的免费DNS服务器的IP地址。

其中stop和quit的区别在于quit是一种较平滑的退出。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » nginx域名如何定位到项目的某个目录下

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情