# Basic authentication and access control
worker_processes auto;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name admin.example.com;
# Global basic auth
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
root /var/www/admin;
index index.html;
}
# Public area - no auth required
location /public {
auth_basic off;
root /var/www/admin;
}
# API with different credentials
location /api {
auth_basic "API Access";
auth_basic_user_file /etc/nginx/.htpasswd_api;
proxy_pass http://127.0.0.1:8080;
}
# Subrequest authentication
location /protected {
auth_request /auth;
auth_request_set $auth_status $upstream_status;
proxy_pass http://127.0.0.1:8080;
}
location = /auth {
internal;
proxy_pass http://127.0.0.1:9000/validate;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
}
}