Announcement

Collapse
No announcement yet.

Scaleway's EPYC Powered Cloud Is Delivering Competitive Performance & Incredible Value

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • dkasak
    replied
    Originally posted by atomsymbol
    You are very good at avoiding precise questions to win over a discussion so that you seem to look "cool" in the end. The question was: How are you proposing to enable both "wget http://100.100.100.100:80/index.html" and "wget http://200.200.200.200:80/index.html" if you allocate only a single public IP address? If you change the question and answer it correctly the answer won't necessarily be applicable to the original question.
    OK buddy, now look. I gave you a detailed example of precisely this. It wasn't to look "cool" as you propose. The discussion on this story has well as truly moved on. It was to try to help an amateur to get on top of his web hosting skills. My example of how everybody implements this has clearly gone way over your head, and you're instead taking professional advice personally. Whatever. Buy some more IP addresses for all I care. You won't go far in IT with that combination of attitude and lack of intelligence.

    Leave a comment:


  • dkasak
    replied
    Originally posted by atomsymbol

    You are proposing to "regenerate" anandtech.com and phoronix.com into anandronix.com/tech and anandronix.com/phoro! It is possible in theory, but unlikely to happen in practice.
    Oh dear No need for all bold. Just be clear what you're trying to do. You were originally talking about services with hard-coded IPs, and now you're hosting domains? I'm pretty sure you don't host anandtech.com and phoronix.com. But if you're running different domains, then you'd just use something like apache virtual hosts. I do this myself - I host a handful of sites ( my own blog, some charity stuff, a friend's blog ), all off the 1 server & IP, using apache virtual hosts.

    If these things are real world issues for you, then hurry up and learn how it's done before people realise they're flying blind

    Leave a comment:


  • dkasak
    replied
    Originally posted by atomsymbol

    How are you proposing to enable both "wget http://100.100.100.100:80/index.html" and "wget http://200.200.200.200:80/index.html" if you allocate only a single public IP address?
    OK, OK. Once more ...

    So firstly, you come up with some mapping scheme. Here's one example. Let's say the 1st part of the URI will be something for your proxy to consume and act on, and that by convention, it will start wtih a 'p_' ( which I'll nominate as meaning 'proxy hint' ). The next part will be a port offset ... and let's say the backend port numbers start at 10000. So, for example:

    p_100 will mean "proxy this request to port 10100 ( ie 10000 - our base port, plus 100, which is our offset ).
    p_200 will mean "proxy this request to port 10100 ( ie 10000 - our base port, plus 200, which is our offset ).

    ---

    So http://100.100.100.100:80/index.html you'd expose externally as:
    http://100.100.100.100:80/p_100/index.html
    ... and the service which used to listen on 100.100.100.100:80 would be running on 100.100.100.100:10100

    Another way of expressing this is:
    /p_100 ==> 127.0.0.1:10100, or:
    /p_100 ==> 100.100.100.100:10100

    Then http://200.200.200.200:80/index.html you'd expose externally as:
    http://100.100.100.100:80/p_200/index.html
    ... and the service which used to listen on 200.200.200.200:80 would be running on 100.100.100.100:10200

    Another way of expressing this is:
    /p_200 ==> 127.0.0.1:10200, or:
    /p_200 ==> 100.100.100.100:10200

    ---

    The proxy could modify the URI on the way through ( eg strip out the proxy hint ... which you might do in a regular expression ... eg:
    s/\/p_[\d]*\//

    This would mean that the backend services wouldn't have to be altered to know about the leading proxy hint in the incoming requests.

    ---

    This is but 1 mapping scheme. You can come up with your own. I used numbers in the mapping scheme because it makes it pretty explicit what's happening. Other people use more descriptive mapping URI components, like:

    /auth ==> 10100
    /products ==> 10101
    /users ==> 10102

    ... etc.

    You obviously need to regenerate all your URLs. There is no way to switch to using a single IP without regenerating your URLs. But the end result is much more flexible, and frankly, it's the way everybody does it. When your site becomes busy enough to warrant expanding onto >1 server ( say your products service is getting hammered ), then you just deploy the service on another host, and update your proxy rules to know about the new location to map to ... ie you don't need to rewrite any end-user-facing URLs to make backend changes.

    There are lots of proxies. nginx is popular, fast, often used for this kind of thing, and does https termination. haproxy would be another option.

    Leave a comment:


  • Scellow
    replied
    I've been using scaleway for more than 1 year, and i'm impressed, price, performance, quality, everything is there

    And Unlimited bandwidth !!!!!! what else do you need ?

    Leave a comment:


  • dkasak
    replied
    Originally posted by atomsymbol

    IP addresses is are parameters.
    Sure, but you've locked in the requirement that there be a 1:1 relationship between 'services' and IP addresses, right? As a couple of us have noted, the standard approach is to map different URL paths to different ports, thereby only requiring 1 IP address. As you've discovered, having multiple IPs can cost you ...

    Leave a comment:


  • dkasak
    replied
    Originally posted by atomsymbol

    I have a small HTTP/HTTPS web server implemented in Go that dispatches URLs to different code/data paths depending on request's IP address and depending on URL's path. I am not forwarding requests to different executables (via Linux sockets or pipes), and if that need might arise in the future I believe it won't be hard to implement in Go. nginx or apache would unnecessarily increase the complexity of the server without improving its function.
    Ah! Well if you've hard-coded the IP address thing into your design, then yeah, not much else will fit.

    Leave a comment:


  • dkasak
    replied
    Originally posted by atomsymbol

    Thank you for your suggestion, but it does not suit my needs.
    No worries Just out of curiosity - what are your needs that clash with this approach?

    Leave a comment:


  • dkasak
    replied
    Originally posted by atomsymbol

    The programmer cannot freely choose the HTTP/HTTPS port (default is 80/443). The process of IP address resolution doesn't include the port number. A non-standard HTTP/HTTPS server port would mean that the browsing user has to specify it which affects user-friendliness.

    In other cases, I agree with you.
    How you'd typically do it is have some kind of proxy listening on port 80 or 443. It would be configured to proxy requests to the correct port. So for example, you might configure it like:

    /login => 10000
    /user => 10001
    /product => 10002
    /booking => 10003


    You'd then run these services on the above ports, and access them via the SAME IP. nginx, apache, haproxy ... these can all do this. Read up on it.

    Leave a comment:


  • polarathene
    replied
    Originally posted by anarki2 View Post
    DO have 12 datacenters and more than 1 million customers so saying they're not "for the masses" is quite a stretch, too.
    Agreed with DO and Vultr being rather well known names for VPS outside of the big name providers. They're good for value/perf iirc, but not EPYC which I thought was the point of the provider comparison for the most part?

    Leave a comment:


  • polarathene
    replied
    Originally posted by atomsymbol

    The programmer cannot freely choose the HTTP/HTTPS port (default is 80/443). The process of IP address resolution doesn't include the port number. A non-standard HTTP/HTTPS server port would mean that the browsing user has to specify it which affects user-friendliness.

    In other cases, I agree with you.
    Reverse proxy, you can map multiple domains(or subdomains) to different internal ports(eg, a server on port 3000, and another at 9000, but the ports aren't directly exposed and must go through the reverse proxy on ports 80/443).

    Leave a comment:

Working...
X