V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yuriko
V2EX  ›  问与答

服务器里不同域名对应不同应用配置的正确姿势是什么

  •  
  •   yuriko · 2016-02-05 10:35:42 +08:00 · 4239 次点击
    这是一个创建于 2975 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务器这块不是太懂

    出于好玩,买了 VPS 来折腾,域名什么的都没问题了
    因为有各种各样的奇怪 web 应用等等,技术平台也不一样,监听的是不同的端口,那么问题来了

    我希望有一直方式,能分配子域名并对不同域名的请求进行分发,导向不同的端口。
    因为是个人站,流量目前不是那么敏感,简单至上,不过考虑到作为学习,一些先进的技术也可以了解下,那么最合理的选择是什么,
    第 1 条附言  ·  2016-02-05 13:55:40 +08:00
    有几个网友似乎 gei 歪了我的意思,我澄清下大概意思就 @just1 理解的差不多。场景是我有多个不同的域名(以及子域名),指向了同一个服务器,那么我要如何导向不同的本地应用,毕竟 80 端口就只有一个。

    我的思路是由一个全局的应用监听 80 然后代理到各个不同的端口。
    以及我知道 nginx 能做这件事,不过我觉得只为了这么个事情就动用 nginx 会不会体量太大,所以来寻求一个更加合理的方案。

    p.s.子域名的分配该怎么做?在 DNS 解析商那边设置就行了吗?
    28 条回复    2016-02-06 11:26:21 +08:00
    Slienc7
        1
    Slienc7  
       2016-02-05 10:47:59 +08:00   ❤️ 1
    Cannikin
        2
    Cannikin  
       2016-02-05 10:53:52 +08:00   ❤️ 1
    gamexg
        3
    gamexg  
       2016-02-05 10:55:59 +08:00   ❤️ 1
    既然折腾了,那么干脆使用 docker 把每个应用独立吧。

    https://github.com/jwilder/nginx-proxy
    ferock
        4
    ferock  
       2016-02-05 10:57:11 +08:00   ❤️ 1
    v2ex 的贴友还是比较有耐心的。。。 lz 真应该去看看 nginx 手册
    JJaicmkmy
        5
    JJaicmkmy  
       2016-02-05 11:04:03 +08:00 via iPad   ❤️ 1
    nginx

    listen 80
    server_name domainA.com

    listen 8080
    server_name domainB.com

    listen 8989
    server_name sub.domianA.com
    JJaicmkmy
        6
    JJaicmkmy  
       2016-02-05 11:04:43 +08:00 via iPad
    @JJaicmkmy PS :每行末尾要加;分号
    just1
        7
    just1  
       2016-02-05 11:07:50 +08:00 via Android   ❤️ 1
    @JJaicmkmy 楼主是要监听 80 ,反代不同的端口
    just1
        8
    just1  
       2016-02-05 11:12:25 +08:00 via Android
    server{
    listen 80;
    server_name domainA.com;
    root /home/wwwroot/sss;
    index indezx.php;
    }
    server{
    listen 80;
    server_name sss.yourdomain.org;
    proxy_pass http://127.0.0.1:8888;
    proxy_set_header User-Agent $http_user_agent;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    server{
    listen 80;
    server_name sss2.yourdomain.org;
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header User-Agent $http_user_agent;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    手机打,凑合着看吧
    DT27
        9
    DT27  
       2016-02-05 11:13:49 +08:00   ❤️ 1
    感觉楼上都理解错了。
    访问不同端口必须域名后面跟端口号。不能直接访问域名服务器导向特殊端口。
    kslr
        10
    kslr  
       2016-02-05 11:28:39 +08:00 via Android   ❤️ 1
    主机名不就是做这个的
    shyling
        11
    shyling  
       2016-02-05 11:45:28 +08:00 via iPad   ❤️ 1
    域名域名:端口就能直接访问对应的服务咯。
    如果是 web ,需要多个域名同时使用 80 端口,那就需要用 nginx 之类的建立虚拟主机进行反代
    其他的服务的话,好像没有特别好的重用用同一个端口的方法。。因为 http 协议会把域名信息发送到服务器。。别的有的仅仅是通过在客户端解析出来 ip
    yuriko
        12
    yuriko  
    OP
       2016-02-05 13:54:44 +08:00
    @xgowex @Cannikin @ferock @JJaicmkmy @just1 @DT27 @kslr @shyling @gamexg

    感谢大家的回复, append 已更新

    以及 @gamexg docker 到底是什么意思呢
    lyragosa
        13
    lyragosa  
       2016-02-05 13:58:43 +08:00
    docker 这个东西,其实本身设计上是用于给那些大中型公司的运维,需要快速,方便,安全,大批量的部署环境并且每个应用之间不互相影响,并不是特别适合个人网站用的。

    如果题主你不是太懂也不想去懂运维上的东西,或者说是不准备在运维上花太多心思,或者是不想陷入器材党不能自拔。我给你推荐一个东西 virtualmin ……用了都说好。
    just1
        14
    just1  
       2016-02-05 14:10:59 +08:00 via Android
    nginx 很轻量级的, 64mb 的 vps 跑还有盈余
    yuriko
        15
    yuriko  
    OP
       2016-02-05 14:17:31 +08:00
    @lyragosa 主要是 nginx 还是又一些学习曲线的,我想在完成手上的东西之前不用花太多时间在上面,所以看看有什么简单的替代方案不
    yuriko
        16
    yuriko  
    OP
       2016-02-05 14:17:56 +08:00
    @lyragosa 主要是 nginx 还是又一些学习曲线的,我想在完成手上的东西之前不用花太多时间在上面,所以看看有什么简单的替代方案不


    @just1
    我是指复杂度嘛……感觉 nginx 的功能好多啊好多
    loading
        17
    loading  
       2016-02-05 14:20:14 +08:00 via Android
    自己去看 nginx
    just1
        18
    just1  
       2016-02-05 14:25:24 +08:00 via Android
    @yuriko nginx 简单掌握很快的,就
    根目录配置 root /path/www/....;
    默认主页 index index.html;
    重定向 rewrite
    返回异常 return 403;
    再加一个反代就差不多了

    子域名在 dns 解析商解析到你的 vps , nginx 对应配置一下就行
    lyragosa
        19
    lyragosa  
       2016-02-05 14:26:52 +08:00   ❤️ 1
    @yuriko 是的,所以选 virtualmin 吧,全程只需要点点鼠标就可以完成。你连 config 文件在哪儿都不需要知道。绝对符合“完成手上的东西之前不用花太多时间在上面”
    VmuTargh
        20
    VmuTargh  
       2016-02-05 14:31:22 +08:00
    lighttpd
    要 HTTP/2 就 h2o
    yuriko
        21
    yuriko  
    OP
       2016-02-05 14:34:12 +08:00
    @lyragosa 恩好回头研究一下
    Alwaysonline
        22
    Alwaysonline  
       2016-02-05 14:35:04 +08:00 via iPhone
    非常推荐用面板程序解决这些问题,国外 CP 或 DA ,国内 AMH 。
    懒得折腾,安心使用好了。
    yuriko
        23
    yuriko  
    OP
       2016-02-05 14:41:47 +08:00
    @Alwaysonline 能不用缩写嘛~这么写我怎么检索是啥呢……哭
    Alwaysonline
        24
    Alwaysonline  
       2016-02-05 14:58:55 +08:00   ❤️ 1
    @yuriko

    国外推荐 cPanel 和 directadmin ,个人推荐 directadmin ,简单而且终身授权便宜 300 元左右。

    国内推荐 AMH http://amh.sh/

    图片是 directadmin 的用户管理界面,清晰可操作,安心开发程序就好,环境什么的其他交给类似的工具吧。
    shyling
        25
    shyling  
       2016-02-05 17:14:21 +08:00 via iPad
    看了看更新:nginx 是很轻量稳定的~别自己再加模块就好~配置也很简单~
    god
        26
    god  
       2016-02-05 17:53:00 +08:00 via iPad
    个人用户或小厂,花点钱解决的问题不要太折腾
    yuriko
        27
    yuriko  
    OP
       2016-02-06 07:45:24 +08:00
    @god 同意,物色合适的成品 ing
    ys0290
        28
    ys0290  
       2016-02-06 11:26:21 +08:00 via iPhone   ❤️ 1
    就装个 nginx ,根据楼上设置反代,并不复杂,你说的我懂,因为我就是这么个情况这么干的,泛域名解析这方面好像并不是每个 nameserver 都支持的,子域名个数没超过限制的话就一个个 CNAME 到主域名吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4275 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 05:30 · PVG 13:30 · LAX 22:30 · JFK 01:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.