0

I have a web app running on a nginx server on local ip 192.168.0.30:80

I have this in my etc/hosts

127.0.0.1 w.myapp.in

If someone accesses my app using a "w" subdomain, it shows a webdav interface, otherwise it runs normally

(for example, someone calls http://myapp.in , it goes into the app, and http://w.myapp.in goes into webdav interface - this is done within the app, nginx has nothing to do with it)

Because I don't have a dns or anything like that, users must access the app by ip. A problem appears if someone wants to access the webdav interface, because you cannot access the app by a subdomain - unless you write a line in your local hosts file, which is not a solution)

A possible solution

If it's possible to setup the nginx server so that if someone calls http://192.168.0.30 (on port 80), it goes normally into the app, but if a user tries to access say http://192.168.0.30:81 (another defined port) it redirects internally to w.myapp.in, and the app sees the subdomain

Given the app, can this be done? If yes, what should I put in the nginx config file? And if you guys think of a better solution, I'm open to any.

2 Answers 2

0

Yes, you can get nginx to listen on two ports and proxy requests on different port numbers appropriately. Something like this:

server {
    listen 80;
    proxy_pass http://localhost:8080/myapp/;
}

server {
    listen 81;
    proxy_pass http://localhost:8080/webdav/;
}
-1

I would try the rewrite directive. Have one server listening on port 80, and optionally rewriting to a real server name. And another server listening on port 81, and rewriting to the 'w' subdomain. Not 100% sure this will work, but it's worth a shot.

server {
  listen 80;
  rewrite ^ http://example.com$request_uri? permanent;
  [...]
}

server {
  listen 81;
  rewrite ^ http://w.example.com$request_uri? permanent;
  [...]
}

http://wiki.nginx.org/HttpRewriteModule

2
  • The users don't necessarily have working DNS, so sending a redirect to a domain name isn't going to work.
    – mgorven
    Commented Apr 19, 2012 at 17:33
  • Sorry, I didn't realize that was a redirect. I intended it to just be a rewrite, but apparently the nginx rewrite module isn't able to rewrite host headers without a redirect. However, there is a post that addresses that issue: stackoverflow.com/questions/9110020/wildcard-nginx-rewrite
    – mltsy
    Commented Jun 14, 2012 at 16:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .