Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I am trying to get Nginx as a reverse proxy to authenticate users performing inbound http requests.

My ISP provides me with a dynamic IP. I am not sure how to configure my ADSL router (NAT rules).

I also want Nginx to listen to port 80 and redirect to 8080 (tomcat).

Here is my nginx.conf file:

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    # Main website Tomcat instance
    upstream tomcat {
        server  127.0.0.1:8080;
    }

    auth_basic "Restricted";                                #For Basic Auth
    auth_basic_user_file /home/julien/system/temp/.htpasswd;  #For Basic Auth

    server {
        listen       80;
        server_name  92.128.100.110;

        location / {
            # Proxy all the requests to Tomcat
            proxy_pass  http://127.0.0.1:8080;
            proxy_set_header  Host $http_host;
        proxy_set_header Authorization ""; #$http_authorization;
        proxy_pass_header  Authorization;
        }
    }
}

Here is the default configuration file:

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name 92.128.100.110;

    auth_basic "Restricted";                                #For Basic Auth
    auth_basic_user_file /home/julien/system/temp/.htpasswd;  #For Basic Auth


    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.html;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
    #location /RequestDenied {
    #   proxy_pass http://127.0.0.1:8080;    
    #}

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    #error_page 500 502 503 504 /50x.html;
    #location = /50x.html {
    #   root /usr/share/nginx/html;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #   fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    #
    #   # With php5-cgi alone:
    #   fastcgi_pass 127.0.0.1:9000;
    #   # With php5-fpm:
    #   fastcgi_pass unix:/var/run/php5-fpm.sock;
    #   fastcgi_index index.php;
    #   include fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #   deny all;
    #}
}

The http authentication is not performed. I am not sure what is wrong with my config. Can anyone please help?

share|improve this question
1  
Check out catch all server block at nginx.org/en/docs/http/server_names.html . That should solve at least one issue you described! –  Pothi Oct 12 '13 at 3:55
    
And don't host a web server at home. –  Michael Hampton Oct 12 '13 at 18:17
    
@MichaelHampton: :-) It is just for showing a webapp to friends of mine... –  balteo Oct 12 '13 at 18:47

1 Answer 1

< bot >convert self-answerer question to CW< /bot >

I was finally able to get it working thanks to Pothi. Here is my final config nginx.conf:

server {
        listen       80;
        server_name  _;
        proxy_set_header Authorization ""; #$http_authorization;
        proxy_pass_header  Authorization;
        auth_basic "Restricted";                                #For Basic Auth
        auth_basic_user_file /home/julien/system/temp/.htpasswd;  #For Basic Auth

        location / {
            # Proxy all the requests to Tomcat
            proxy_pass  http://127.0.0.1:8080;
            proxy_set_header  Host $http_host;
        }
    }

Nat rule:

  • in port: 80
  • out port: 80

And don't forget to open port 80 on ufw firewall.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.