Thursday 31 January 2013

Stage 1 - Set up nginx on Windows, with ZoneAlarm

Ultimately, my plan is to use nginx to serve the static web pages for multiple domain names, and for it to act as a reverse-proxy to the Seaside web-apps.

Stage 1 - get nginx working, and visible from the internet.

Step 1 - get nginx (pronounced "Engine X") working on Windows.

             At the Command Line (Run cmd from Start Menu),     cd <the folder containing the application app>
             type nginx
      
             On Vista, it works with three processes, all called "nginx" with Process Ids (PIDs) listed by:
              tasklist /FI "IMAGENAME eq nginx*"

             Notes:  It sets up using the parameters contained in the nginx.conf file held in
             <the folder containing the nginx application> /conf

     This nginx.conf file provides a webserver on port 80.

worker_processes  2;    # One for each CPU core
error_log logs/main_error.log;
pid        logs/nginx.pid;
events { worker_connections 1024; }

http 
 { include        mime.types;  
   # On Windows, this goes to [<nginx>/conf/]mime.types
   # i.e. the mime.types file in the conf dir in the nginx's directory

   default_type   application/octet-stream;

   index index.htm index.html index.st index.php;

   server    #default
    { server_name :80;
      access_log logs/catchall.access.log;
      error_log logs/catchall.error.log;
      root html\catchall;
    }

 }

Step 2 - close down nginx on Windows

            run cmd from Start Menu again, to bring up a second Command Line
                  (As the cmd window opened in step 1 gets taken over by nginx, so cannot be used)

            nginx -s stop

            If nginx has had a problem with the configuration file, this sometimes might not work.

            First alternative:
            nginx -s quit

            If this also does not work, the second alternative:
            Find the PIDs for the principal nginx process on Window
             tasklist /FI "IMAGENAME eq nginx*"
           Kill the processes
      taskkill /PID <number in the nginx.pid file>
            
Step 3  get nginx visible through the router's firewall.

           Make sure the PC running nginx has a static IP address.
           Log into the router, and use port-forwarding for HTTP on port 80, to the PC.

Step 4 Get nginx working through ZoneAlarm Free firewall

Check if the server is accessible from outside your local network.  (A good way is to switch off wifi on your phone, and then use the phone's browser to access the website via the website's domain name).

If it works, that's great.

If it doesn't work however...

Switch off ZoneAlarm Free Firewall.
Check if the server is accessible from outside your local network.


If it still doesn't work ...
Re-check that the web-server is running: tasklist /FI "IMAGENAME eq nginx*"
Re-check what IP address the PC is on, and that it matches the IP being used on the router's port-forward.  (Also check that it matches the static IP address that you want the PC to use).

If the server is accessible, switch ZoneAlarm back on.

Delete nginx from the list of programmes in ZoneAlarm 

Try to access the webserver via localhost
and try to access the webserver from another local device via the IP address.

Zonealarm will pop up a window asking if nginx should be allowed to provide local access.


Check if the server is accessible from outside.
Zonealarm will pop up a window asking if nginx should be allowed to provide access to the internet.

No comments: