nginx反向代理二级域名怎么绑定

本篇内容主要讲解“nginx反向代理二级域名怎么绑定”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nginx反向代理二级域名怎么绑定”吧!

成都创新互联专业为企业提供广陵网站建设、广陵做网站、广陵网站设计、广陵网站制作等企业网站建设、网页设计与制作、广陵企业网站模板建站服务,10多年广陵做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

1、应用场景

我们经常会遇到在同一台服务器建立多个web站点的情况,普遍的做法是为不同的站点配置不同的端口,这样就可以用ip:port的形式访问。

但是用ip访问毕竟不方便,不生动,不容易记忆。那么,我们可以给每个站点绑定不同的域名。(在这里我们仅谈公网情况)即使我们只有一个域名,我们可以设置多个二级域名,使用nginx很容易实现。

2、基本要求

通常,网上教程会直接贴一段配置文件的代码,告诉我们如此这般就ok了。但我发现很多新手看着教程配置,并不能像博主那样就success了,所以接下来我们谈一下基本原理。

首先,要有一个自己能管理的域名,比如我有一个 postmsg.cn 的域名,就可以生出多个子域名,二世三世千万世……

其次,有一台能访问的公网服务器,可以在这台服务器上建立自己的web站点,一个两个三四个,对应端口不一。

然后,就是域名和站点的绑定,一个萝卜一个坑,当然也可以多个萝卜一个坑……

3、一般配置

需要配置的地方有两个,我们先谈首要先决条件,也是有些新手容易忽略的地方。

(1)域名配置

把域名的a记录解析指向我们的公网服务器,这一点一般人都能想到。解析的时候只能加ip,是不能带端口号的,即只能使用默认的80端口。(不讨论域名转发)

若想实现子域名绑定,在域名解析的时候必须配置合理。否则只靠nginx是不行的。

例如我要把子域名  p.postmsg.cn 绑定到 服务器的 8001端口,我首先要保证访问 p.postmsg.cn 的请求能到达该服务器,然后nginx才能处理。

此时,要么在域名a记录解析里加一条 p 的主机记录,要么主机记录里有通配符 * 的配置(*.postmsg.cn的访问全部解析到对应的服务器,慎用),只设置@和www肯定是不行的。

nginx反向代理二级域名怎么绑定

             图1 - 域名解析示例

(2)主机配置

域名的请求到达主机之后,一切才可以交给nginx来处理。

修改nginx配置的时候,可以直接在默认配置文件(例如/etc/nginx/nginx.conf,如以下代码片段所示)里修改,也可以在某个目录下新建独立的配置文件,然后 include 这个目录下的配置文件(如第17行所示)。

http {
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';
  access_log /var/log/nginx/access.log main;
  sendfile      on;
  tcp_nopush     on;
  tcp_nodelay     on;
  keepalive_timeout  65;
  types_hash_max_size 2048;
  include       /etc/nginx/mime.types;
  default_type    application/octet-stream;
  include /etc/nginx/conf.d/*.conf;
}

这是nginx读取配置文件的格式,我们的配置通常写在 http { } 块里,加上 server 块,在server块里配置。刚才也说了,server块可以写在一个单独文件里,在nginx.conf里包含该文件,同时,支持嵌套 include。

接下来看一下 server 块的写法:

server {
  listen 80;
  server_name p.postmsg.cn;
  location / {
  proxy_pass http://127.0.0.1:8008;
    proxy_redirect off;
    proxy_set_header host $host;
    proxy_set_header x-real-ip $remote_addr;
    proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
  }
  #access_log logs/p_access.log;
}

这里的 server_name 对应配置的域名,proxy_pass对应代理的真实地址。

(3)注意事项一

一定要把 80 端口留给负责代理的nginx。我们可以在一个服务器上同时使用apache httpd,nginx,tomcat,但是域名解析只能使用默认的80端口,负责代理的同志要拿到第一手请求。

(4)注意事项二

即时生效性。有的朋友感觉自己配置的都对,也重启服务了,可就是看不到想要的结果。这里有三个方面的可能因素。

  1. 域名解析生效时间。阿里云的域名最低生效时间是10分钟,有时候可能大于这个值。

  2. 本地DNS缓存。可在cmd使用 ipconfig /flushdns 命令刷新本地dns缓存。

  3. 浏览器缓存。这个可能才是最不容易发现的,尤其是谷歌浏览器。f12之后,右键左上角地址栏边上的刷新按钮,点击清空缓存并硬性重新加载。

  4. 服务未重启。service nginx restart 有时候可能没有先 stop, 再 start 好用。

到此,相信大家对“nginx反向代理二级域名怎么绑定”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网站标题:nginx反向代理二级域名怎么绑定
URL分享:http://azwzsj.com/article/pjjggp.html