精华内容
下载资源
问答
  • 一个IP可以对于多个域名的意思是:一个IP绑定到一台服务器的时候,在服务器上可以设置多个主机头,每个主机可以绑定一个域名。这样当访问者打开服务器上站点的时候,服务器会根据访问者访问的是哪...

    一个域名只能对应一个IP的意思是
    域名在DNS服务器里做解析的时候 一条记录只能指向一个IP地址。这个是死规定,试想一下,如果一个子域名指向了2个ip ,当访问者打开这个域名的时候,浏览器是展示哪个IP上的网站呢?
    一个IP可以对于多个域名的意思是:
    一个IP绑定到一台服务器的时候,在服务器上可以设置多个主机头,每个主机头可以绑定一个域名。
    这样当访问者打开服务器上站点的时候,服务器会根据访问者访问的是哪个域名,来展示对应域名的网站内容。

    转载于:https://www.cnblogs.com/NJM-F/p/10075070.html

    展开全文
  • 这里为大家稍作介绍一下,作法稍不同。 支持 SSL 首先 nodejs 支持 HTTPS 很简单,只需要把 require(‘http’) 变为 require(‘https’),然后导入证书文件即可,当然也要把监听端口 80 变为 443。...

    四年前写过一篇《用 nodejs 做反向代理服务器》,那时基于 HTTP 的,时过境迁,HTTPS 已是主流。怎么把 HTTP 升级到 SSL 呢?这里为大家稍作介绍一下,作法稍有不同。

    支持 SSL

    首先 nodejs 支持 HTTPS 很简单,只需要把 require(‘http’) 变为 require(‘https’),然后导入证书文件即可,当然也要把监听端口 80 变为 443。

    支持多个 SSL

    一个 SSL 证书毫无问题,如果多个呢?因为多个域名是对应不同的 SSL 证书。node 支持 SNI(Server Name Indication),自带 API 就支持——它就是专门满足这个功能需求的。

    SNI (Server Name Indication)是用来改善服务器与客户端 SSL (Secure Socket Layer)和 TLS (Transport Layer Security) 的一个扩展。主要解决一台服务器只能使用一个证书(一个域名)的缺点,随着服务器对虚拟主机的支持,一个服务器上可以为多个域名提供服务,因此SNI必须得到支持才能满足需求。

    完整例子

    例子如下。需要注意,后端 tomcat 没有 HTTPS,不能像以前 301 跳转。转为,每个网站一个 tomcat,用不同端口划分(如 81、82、83)。这样服务器资源的吃得比较多,毕竟不是一个 tomcat 挂多个网站。

    const http = require('https'),
        httpProxy = require('http-proxy'),
        fs = require('fs'),
        tls = require('tls');
    
    // 新建一个代理 Proxy Server 对象  
    var proxy = httpProxy.createProxyServer({});
    
    // 捕获异常  
    proxy.on('error', function(err, req, res) {
        res.writeHead(500, {
            'Content-Type': 'text/plain'
        });
        res.end('Something went wrong. And we are reporting a custom error message.');
    });
    
    const secureContext = {
            'framework.ajaxjs.com': tls.createSecureContext({
                    key: fs.readFileSync('./ssl/2_framework.ajaxjs.com.key', 'utf8'),
                    cert: fs.readFileSync('./ssl/1_framework.ajaxjs.com_bundle.crt', 'utf8')
                }),
            'myotherdomain.com': tls.createSecureContext({
                key: fs.readFileSync('../path_to_key2.pem', 'utf8'),
                cert: fs.readFileSync('../path_to_cert2.crt', 'utf8'),
                ca: fs.readFileSync('../path_to_certificate_authority_bundle.ca-bundle2', 'utf8'), // this ca property is optional 中间证书
            }),
        },
        options = {
            SNICallback: function(domain, cb) {
                if (secureContext[domain]) {
                    if (cb) {
                        cb(null, secureContext[domain]);
                    } else {
                        // compatibility for older versions of node
                        return secureContext[domain];
                    }
                } else {
                    throw new Error('No keys/certificates for domain requested');
                }
            },
            key: fs.readFileSync('./ssl/2_www.ajaxjs.com.key'),
            cert: fs.readFileSync('./ssl/1_www.ajaxjs.com_bundle.crt')
        };
    
    // 另外新建一个 HTTP 80 端口的服务器,也就是常规 Node 创建 HTTP 服务器的方法。  
    // 在每次请求中,调用 proxy.web(req, res config) 方法进行请求分发  
    var server = require('https').createServer(options, function(req, res) {
        // 在这里可以自定义你的路由分发  
        var host = req.headers.host,
            ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
        console.log("client ip:" + ip + ", host:" + host);
    
        switch (host) {
            // case 'framework.ajaxjs.com':
            case 'bbs.aaaa.com':
                res.writeHead(301, { 'Location': 'http://framework.ajaxjs.com/framework/' });
                console.log(res._header);
                res.end('hihi');
                break;
            case 'framework.ajaxjs.com':
                proxy.web(req, res, { target: 'http://127.0.0.1:81' });
                break;
            case 'ajaxjs.com':
            case 'www.ajaxjs.com':
                proxy.web(req, res, { target: 'http://127.0.0.1:82' });
                break;
            case 'weixintest.ajaxjs.com':
                proxy.web(req, res, { target: 'http://127.0.0.1:83' });
                break;
            default:
                // res.writeHead(302, { 'Location': 'https://www.baidu.com/' });
                // res.end();
                res.writeHead(200, {
                    'Content-Type': 'text/plain'
                });
                res.end('Welcome to my server!');
        }
    });
    
    var port = 443;
    console.log("listening on port: " + port);
    server.listen(port);
    

    非 HTTP 跳转

    80 端口的话,就全部跳转到 443,这样需要多一个 nodejs 监听 80 端口,只做跳转。

    // 80 forward to 443
    var server = require('http').createServer(function(req, res) {
        var host = req.headers.host;
        switch (host) {
            case 'ajaxjs.com':
            case 'www.ajaxjs.com':
                res.writeHead(301, { 'Location': 'https://www.ajaxjs.com/' });
                res.end();
                break;
            case 'framework.ajaxjs.com':
                res.writeHead(301, { 'Location': 'https://framework.ajaxjs.com/' });
                res.end();
                break;
            default:
                // res.writeHead(302, { 'Location': 'https://www.baidu.com/' });
                // res.end();
                res.writeHead(200, {
                    'Content-Type': 'text/plain'
                });
                res.end('Welcome to my server!');
        }
    });
    
    var port = 80;
    console.log("listening on port: " + port);
    server.listen(port);
    

    Ref: https://stackoverflow.com/questions/12219639/is-it-possible-to-dynamically-return-an-ssl-certificate-in-nodejs#answer-20285934

    19–1-10
    最近发现小程序接口,iOS 访问正常,安卓却出现 request:fail ssl hand shake error。这是缺少 中间证书 的缘故。下面是测试是否有中间证书的服务。如果没有,要将 1_root_bundle.crt 引入到 ca 项(CertificateChain)。如果有多个域名证书那么全部都要加上。

    展开全文
  • 一台服务器支持多个域名和站点

    万次阅读 2018-03-28 15:04:01
    最近数次遇到这种情况:硬件资源有限,但有些开发配置要求比较...需求只有一台服务器,一IP;服务器上应用运行在不同的端口。例如:127.0.0.1:4000 运行着一node.js写的博客应用127.0.0.1:3009 运行着一...

    最近数次遇到这种情况:硬件资源有限,但有些开发配置要求比较严苛(如在微信公众号进行接口配置或安全域名配置),要求80端口甚至顶级域名。但服务器的80端口早就被之前的已经上线的应用占掉了。

    因此做了一些尝试,最终解决了访问问题。

    需求

    1. 只有一台服务器,一个IP;
    2. 服务器上有多个应用运行在不同的端口。例如:
    • 127.0.0.1:4000 运行着一个node.js写的博客应用
    • 127.0.0.1:3009 运行着一个微信公众号机器人的后台
    1. 希望不同的域名,都解析到该IP的80端口,但是转发到不同的端口去:
    • www.me.com 能访问到127.0.0.1:4000的应用
    • 新增一个mysite.mydomain.com 能访问到127.0.0.1:3009的微信后台(微信要求绑定服务器时绑定的是80端口)

    思路

    域名都解析到该服务器的IP下,通过Nginx区分主机头,从而决定请求访问到哪个应用。

    相当于门卫将不同的来者领到不同的房间。

    最终通过对Nginx的配置实现了需求。

    目前用着没啥问题,但优劣还待考证。

    Part 1: 服务器端操作

    1. 在Nginx的conf中添加upstream

    指向第二个应用的本机地址。

     upstream mysvr {
          server 127.0.0.1:3009; 
        }
    

    附上原有的第一个应用的upstream。

    upstream hodorsvr {
          server 127.0.0.1:4000; 
        }
    

    2. 在Nginx的conf中添加二级域名主机头80端口的侦听

    注意本例中,要新添加的解析二级域mysite.mydomain.com

    • 端口号为80
    • server_name 精确匹配到二级域名(本例中为mysite.mydomain.com。其他规则或www也可以,只要与域名商处解析行为一致即可)

    再给conf添加如下1个server:

    server {
            listen       80;
            server_name  mysite.mydomain.com;
            location / {
                proxy_pass http://mysvr;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    
    

    添加后,有2个server,一个用来匹配www.me.com,一个用来匹配mysite.mydomain.com
    附上原有的另一个server:

    server {
            listen       80;
            server_name  me.com www.me.com;
            location / {
                proxy_pass http://hodorsvr;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    

    upstream和server都在conf中加好后,使用如下命令测试一下配置文件是否可用。以我自己的为例:

    /usr/local/webserver/nginx/sbin/nginx -t
    

    通过后,再重启nginx。

    /usr/local/webserver/nginx/sbin/nginx -s reload
    

    先检查一下原有的域名访问是否一如既往。
    注意测试前可清除一下DNS缓存。
    如果是Mac系统,使用如下命令:

    sudo dscacheutil -flushcache
    

    Part 2: 域名商操作

    在域名商(域名在哪家买的就去哪家)处,增加新域名(二级域名)的A记录解析到该IP。

    Part 3: 空间商操作

    一般的服务器,解析后即可生效,不需要在空间商处做额外的动作。

    但如果域名商为西部数据且空间是国内要备案的那种空间,则需要:

    • 为你的IP添加白名单,填写时要求填写顶级域名。即,你只是想为mysite.mydomain.com解析,但添加时要填写mydomain.com;
    • 去域名商那里,在你的域名mydomain.com下,不用动www和@的A记录,直接增加一条mysite(你的二级域名)的CNAME解析到白名单返回给你的那一串值上。

    Part 4: 最后确认

    清除一下DNS缓存。
    如果是Mac系统,使用如下命令:

    sudo dscacheutil -flushcache
    

    然后使用nslookup看一下你的两个域名是否已经指向了你这台服务器的IP。

    之后就通过不同域名访问,看看是否导向了不同的应用即可。

    ~ END ~

    参考

    受益于如下这些文章:

    Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)

    nginx 一个端口多域名服务方案

    帖子: 二级域名如何指向同一IP地址的不同端口



    作者:GingerBot
    链接:https://www.jianshu.com/p/fc16f4914c02
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    展开全文
  • 虚拟主机空间1G,博客用不了那么多空间,而自己又屯有几个域名,所以就个虚拟主机上搭建多个网站的想法。查阅资料历经种种失败,终于折腾出来了还是。下面把最后的可以实现的方法记录下来。其他方案不做介绍,...
    虚拟主机空间1G,博客用不了那么多空间,而自己又屯有几个域名,所以就有了一个虚拟主机上搭建多个网站的想法。查阅资料历经种种失败,终于折腾出来了还是。下面把最后的可以实现的方法记录下来。其他方案不做介绍,反正我没实现,如果你有更高的办法,欢迎推荐。

    首先拥有几个域名并绑定到你的虚拟主机上。如a.com b.com c.com d.com e.com
    在网站根目录(wwwroot目录)下,新建文件夹a至e,五个文件夹,根据你绑定的域名数自行修改
    虚拟主机后台面板修改index.asp 为默认首文件

    建立index.asp 并上传,代码如下:

    <%@language="vbscript" codepage="936"%>
    <%if request.servervariables("server_name")="www.a.com" then
    response.redirect "a/index.html"
    else if request.servervariables("server_name")="www.b.com" then
    response.redirect "b/index.html"
    else if request.servervariables("server_name")="www.c.com" then
    response.redirect "c/index.htm"
    else if request.servervariables("server_name")="www.d.com" then
    response.redirect "d/index.html"
    else if request.servervariables("server_name")="www.e.com" then
    response.redirect "e/index.html"
    end if
    end if
    end if
    end if
    end if%>
    通过以上设置即可实现一个虚拟主机多个域名多个网站的功能。
    虚拟主机剩余空间大小还较多,因此如果有建站需求的可以联系,为你开辟一个空间。

    展开全文
  • 种情况:如果你IP资源的话 多IP对应多Web站点如果本机已绑定了多IP地址,想利用不同的IP地址得出不同的Web页面,则只需在“默认Web站点”处单击右键,选“新建→站点”,然后根据提示在“说明”处...
  • 其实一台虚拟主机可以拥有多个独立的网站、独立的域名。今天就跟大家分享一下如何在在阿里云虚拟主机上绑定多个域名创建多个网站。  方法如下:  第一步、在虚拟主机根目录下修改.htaccess(没有的话就新建...
  • 中国十大域名圈高手 看看知道几个

    千次阅读 2018-09-28 20:55:37
    蔡文胜2000年开始上网,买了第一台电脑,2000年6月12日就注册了第一个域名,叫yikatong.com,他还有注册了一大堆的域名,但等了一年都没人买。 到2000年底,他几乎快要放弃了。后来一天,他查一个域名,据蔡回忆,...
  • 这个是原创。 首先下载个nginx反代理软件。我不说他的原理,只说他能做什么事情。 这个软件能做哪些事情?...首先记住一点:1如果你的服务器是在海外,你的域名不用备案照样可以访问(但是几个弊端,是访问速
  • 1.用第二种方法:先在ECS安全组放行端口比如说81端口,在用域名加端口部署源码:比如宝塔面板的www.paoba.work:81,安排好根目录就可以部署了,...这种方法适用于一台服务器IP的情况,但目前阿里云的ECS只允许绑.
  • 使用自己的电脑,下载一个tomcat服务器,并将域名解析到本机,这样就可以发布自己的网站了。不过,关机之后网站便登不上去了。这样做只是为了我们可以更好的开发调试自己的工程,网站上线之后可以让更多的朋友帮你找...
  • IIS(以及Apache等等其他Web Server)都可以做到“虚拟主机”(注意不是“虚拟目录”),也就是一台主机可以对应多Web Site(“网站”)。很多网络服务商(IDC)就是使用这样的技术在一台主机上放置多网站。  ...
  • 1,因特网的地址系统规定,每台接入因特网的计算机允许_____地址码。 (A)多 (B)零 (C)一 (D)不多于两 2,在因特网中允许一台主机拥有()ip 这两题的答案是什么,网上答案都不一样,求解释
  • 互联网、Internet、因特网、国际互联网是同一个概念,指的是由那些使用共用语言互相通信的计算机连接而成的全球网络(百度百科)。 WWW是World Wide Web的简写,可以简称为Web,是互联网(Internet)上的项常用...
  • 前言:从开始接触服务器,主机等,就觉得如果一个网站一个服务器主机的话,那么像百度,腾讯等这么大公司那岂不是数不尽的服务器了。一直也很好奇到底是怎么回事,但没有认真总结过到底是如何实现的。 现在因为...
  • 如何通过一台电脑黑掉一国家?

    千次阅读 2017-11-03 16:51:46
    一台被入侵的服务器可以连接外网,但是里面的东西少的可怜,基本没啥太大价值的,就是一些源代码。经过长达两月的分析,该服务器可以访问内网的服务器大于200多台。内网扫描基本上也就是reGeorg开socks代理...
  • 由于各种原因,我们时候需要在一个IP地址上建立多web站点,在IIS5中,我们可能通过简单的设 置达到这目标。 在IIS中,每 Web 站点都具有唯一的、由三部分组成的标识,用来接收和响应请求: (1) IP地址 ...
  • Apache的虚拟主机是一种允许在同一台机器上,运行超过一网站的解决方案。虚拟主机有两种,一种叫基于IP的(IP-based),另一种叫基于名字的(name-based)。虚拟主机的存在,对用户来说是透明的。基于IP的虚拟主机...
  • 域名主机头、同一个IP在IIS环境下架设多网站  由于各种原因,我们时候需要在一个IP地址上建立多web站点,在IIS5中,我们可能通过简单的设  置达到这目标。  在IIS中,每 Web 站点都具有唯一...
  • 插一U盘黑一台电脑-Badusb最详细制作教程

    万次阅读 多人点赞 2019-08-01 19:13:57
    技术交流或渗透测试培训需求的朋友欢迎联系QQ547006660 2000人网络安全交流群,欢迎大佬们来玩 0x001-简介 1.概述 在2014年美国黑帽大会上,安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示了他们称为...
  • 域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的种服务。 IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换...
  • 本科毕业的时候做毕设要做一个网站,于是在阿里云(当时还叫万网)花了十块钱购买了一个自己顶级域名。阿里云那时候还提供免费的云虚拟主机,1G容量,50M数据库,15G的流量(?)。对学生来说完全够用了。可是这...
  • 域名,IP,主机名的区别与使用

    千次阅读 2017-05-12 16:23:49
    为了达到通信的目的,需要给参与通信的主机一号码,这就是ip地址,它具有唯一性。 主机名就是在一特定网络范围内一计算机的名字。...2.IP地址并不代表一台具体的主机,而是代表一台主机与一特定网络的链接
  • 为网站添加几个二级域名访问的频道,不但可以使网站架构更加清晰,也方便用户的访问,因为在很大程度上缩短了访问地址。二级域名地址的访问,可以让访客对网站产生好感,http://t.qq.com/怎么说都比 ...
  • 终于人把域名和DNS服务器给写明白了

    万次阅读 多人点赞 2020-05-10 16:39:17
    终于人把域名和DNS服务器给写明白了
  • NGNIX 配置个服务器上80端口绑定多个域名多个网站
  • 让双网卡一台电脑拥有两网关

    万次阅读 2010-04-16 13:05:00
    首先要声明一点,双网卡一台电脑拥有两网关是不可能的,因为默认网关(default gateway)只能是一。给服务器安装两块网卡,分别设置不同的ip和网关(内网和外网),外网的通过外网网卡来访问,内网的通过内网...
  • 如何查询一个IP上所绑定的域名

    万次阅读 2012-03-06 12:47:28
    通过PING就可以查询这个域名的IP地址,但是如何反过来查询个IP上多少个域名呢?其实也很简单,现在很多网站可以查询IP上边绑定的域名。那么这种查询IP上边的域名又什么意义呢?今天我给大家说道说道。 ...
  • 很多购买过的ssl证书的朋友想问,我一个域名可以用多个ssl证书吗?其实这是可以的,比如说个企业类型的网站,需要增加访客对企业的信任程度,他们购买了个EV型的证书,这样用户访问时,浏览器的地址栏会变成绿色...
  • 让双网卡一台电脑拥有两网关(转)

    千次阅读 2009-09-29 00:23:00
    让双网卡一台电脑拥有两网关(转)首先要声明一点,双网卡一台电脑拥有两网关是不可能的,因为默认网关(default gateway)只能是一。给服务器安装两块网卡,分别设置不同的ip和网关(内网和外网),外网的通过...
  • nginx 配置虚拟主机,实现在一个服务器可以访问多网站

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,754
精华内容 34,701
关键字:

一台主机可以有几个域名