Skip to content

Allow forwarding ports via URL #1309

Closed
Closed

Description

@nhooyr

#512

So like localhost:8080/port/8080 to access port 8080 view HTTP.

Activity

  1. Rekrii commented on Jan 28, 2020

    @Rekrii

    Currently I do this via a reverse proxy (nginx or similar) on the host box to forward /8080 URL to :8080 the code-server instance, and then an nginx server in CS to host whatever the user (me) wants. Very neat and simple. Not sure how scaleable it is if you needed 10k+ ports.

    Comes down to if CS needs to be a swiss army knife of tools, or just a base IDE and you add stuff yourself (e.g. nginx as above).

  2. sr229 commented on Jan 28, 2020

    @sr229
    Contributor

    I think we'll have a lot of benefits having a port forwarding proxy since its been a long overdue request by the community for us. Though I'd prefer we do it as a VS Code extension since its more suitable to do it in VS Code's own APIs AFAIK.

  3. zhpengfei commented on Feb 15, 2020

    @zhpengfei

    @Rekrii Could you share the contents of the nginx.conf ? Thanks very much!

  4. Rekrii commented on Feb 25, 2020

    @Rekrii

    @zpfei206 Sorry I was on holiday. See below:

    I use something simple like this in an nginx instance running in code-server:

    server {
    listen 8080;
    server_name my.domain.com;
    root /config/workspace/MyProjectHTMLFiles/;
    index index.html;
    }

    On the nginx reverse proxy i use:

    location /8080/ {
    proxy_pass http://localhost:8080/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    }

    This way i forward a single port, 80, to my nginx RP, and it can then do basic-auth where i need (for my code-server instance) and have it hand connections to different ports internally.

    Also ensure all SSL config is secure; ciphers, etc are good (I use Qualsys SSL Labs test).

    As i mentioned above, this won't scale too well into a large number of ports. But I use this to test/host different prototype projects I'm working on - normally say 10 or so, so i can manually do this port forward setup for such a small number.

  5. benz0li commented on Mar 27, 2020

    @benz0li
    Contributor

    @Rekrii You might consider

    location ~ /(\d+)/(.*) {
      proxy_pass http://localhost:$1/$2;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
    

    for general port forwarding.

  6. kylecarbs commented on Mar 27, 2020

    @kylecarbs
    Member

    Fixed once #1453 is merged.

  7. benz0li commented on Mar 27, 2020

    @benz0li
    Contributor

    @code-asher Thanks for the great work on #1453.

    I think /p/<number> would be preferable to <number>.[domain] as it remained compatibility running Code Server on Jupyter using Jupyter Server Proxy.

  8. code-asher commented on Mar 27, 2020

    @code-asher
    Member

    @benz0li Thanks! I didn't mention it in the PR but /proxy/<number> will also work.

  9. Rekrii commented on Mar 28, 2020

    @Rekrii

    @benz0li oh that's much cleaner - thanks!

  10. kylecarbs commented on Apr 14, 2020

    @kylecarbs
    Member

    It's been merged 🎊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementSome improvement that isn't a feature

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions