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

域名如何对应端口?

  •  
  •   leohxj · 2014-05-19 14:14:39 +08:00 · 7523 次点击
    这是一个创建于 3840 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我有两个站点分别在8080,8081端口,有两个域名A,B。

    如何设置通过80端口转发A,B到8080, 8081?

    求指导。
    10 条回复    2017-01-11 16:04:13 +08:00
    wzxjohn
        1
    wzxjohn  
       2014-05-19 14:19:16 +08:00   ❤️ 1
    分别在8080和8081端口监听,然后在80端口开启反向代理服务器,根据域名选择后端端口即可。
    zoowii
        2
    zoowii  
       2014-05-19 14:19:24 +08:00   ❤️ 1
    nginx反代
    leohxj
        3
    leohxj  
    OP
       2014-05-19 14:40:27 +08:00
    @wzxjohn
    @zoowii
    你们说的是不是修改nginx配置文件,然后监听80端口,根据URL规则转发?

    能否给我一个配置参考,我写了报错。
    hging
        4
    hging  
       2014-05-19 15:07:57 +08:00
    upstream test {
    server 0.0.0.0:3000;
    }
    server {
    root /home/rongyi/project/rongyi_term1/public;
    index index.html index.htm;
    server_name 192.168.1.56;

    location / {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_buffering on;
    proxy_pass http://test;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /500.html;
    }

    @leohxj
    hging
        5
    hging  
       2014-05-19 15:09:12 +08:00   ❤️ 1
    server_name你写你的域名 然后第二行server里面写你程序的端口. 多个的话,复制多个这个配置,然后把upstream后面的名字还有下面的proxy_pass 这个都修改下就行了.
    rrfeng
        6
    rrfeng  
       2014-05-19 15:12:38 +08:00   ❤️ 1
    upstream server1 { server 127.0.0.1:8080}
    upstream server2 { server 127.0.0.1:8081}

    server {
    listen 80;
    server_name SERVER_NAME_1 SERVER_NAME_2;

    location / {

    if ( $server_name == server1 ) {
    proxy_pass http://server1;
    }

    if ( $server_name == server 2 ) {
    proxy_pass http://server2;
    }
    }
    leohxj
        7
    leohxj  
    OP
       2014-05-19 15:31:11 +08:00
    @hging
    我试了你的这段内容,没有起效。

    我自己这样写的代理:
    server {
    listen 80;
    server_name localhost;

    location / {
    root html;
    index index.html index.htm;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root html;
    }
    }

    server {
    listen 80;
    server_name 192.168.1.60;
    location ~ / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host:80;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Via "nginx";
    }
    }

    能通过192.168.1.60访问到192.168.1.60:3000,但是CSS,JS文件响应都很慢。

    我就是想在本地上实现一个localhost转发到4000端口,192.168.1.60转发到3000端口的功能。
    leohxj
        8
    leohxj  
    OP
       2014-05-19 16:05:00 +08:00
    @rrfeng
    @leohxj
    可以帮我看下我刚刚上面写的那种方式,为什么资源文件响应都很慢?

    按照你们的方式,我这样写之后,速度正常了:
    upstream nodejs__upstream {
    server 127.0.0.1:3000;
    keepalive 64;
    }
    server {
    listen 80;
    server_name 192.168.1.60;
    location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header Connection "";
    proxy_http_version 1.1;
    proxy_pass http://nodejs__upstream;
    }
    }

    谢谢!
    hging
        9
    hging  
       2014-05-19 16:41:21 +08:00   ❤️ 1
    @leohxj 资源响应慢的话. 你直接用3000端口慢么. 如果慢的话看看node是不是有什么处理机制来着.
    peneazy
        10
    peneazy  
       2017-01-11 16:04:13 +08:00
    学到一手
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:22 · PVG 18:22 · LAX 02:22 · JFK 05:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.