nginx

August 19, 2016 · 1 min read

最近项目遇到比较坑爹的一种情况: 服务器已经好了,但是备案没有通过,80端口就不能用,而且因为代码是别人写的,做了很多的访问域名限制,不能通过IP访问,这个时候又需要向客户展示进度,让她们能通过某个域名访问网站。

首先我们想到了一种解决方案: 那就是改host(因为代码中配置三个二级域名,所以这里会有三个),将本地某个访问域名指向我们的服务器

xx.xxx.xxx.xx   apistaging.example.cn
xx.xxx.xxx.xx   developers.staging.example.cn
xx.xxx.xxx.xx   staging.example.cn

这样就存在一个问题,那就是每个人都需要改动本地host才能访问到服务器。然后甲方会告诉你: 我不懂电脑,不懂怎么改host,我就想简单点,直接访问就好了,你们想方案吧。

于是第二个方案出炉了: 做一个反向代理,在我们的一个中间的服务器上跑一个nginx代理服务,通过它去访问服务器,这样只要在一台机器上配置host跟nginx就好了。于是一下配置产生了,因为代码中控制了跳转整个网站的域名,所以这份配置看起来跟其他正常配置会有所不同,不完全适合其他项目。

server {
   listen       80;
   server_name  visit_url;
   location = / {
      rewrite ^/ visit_url/zh-CN;
   }
    location / {
       proxy_set_header Host visit_url:3000;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_pass visit_url:3000;
       proxy_next_upstream error;
       proxy_redirect     off;
   }
 }

说道这里,是觉得有点干涩,没啥料,那就加点笔记纪录下学习nginx的过程。

main
events   {
  ....
}
http        {
  ....
  upstream myproject {
    .....
  }
  server  {
    ....
    location {
        ....
    }
  }
  server  {
    ....
    location {
        ....
    }
  }
  ....
}

nginx配置文件主要分为六个区域:

  • main(全局设置)
  • events(nginx工作模式)
  • http(http设置)
  • sever(主机设置)
  • location(URL匹配)
  • upstream(负载均衡服务器设置)

更多资料

https://www.zybuluo.com/phper/note/89391