nginx - 在不同端口上使用 nginx 的 Http 基本身份验证

标签 nginx webserver .htpasswd

我有一个带有反向前端代理的网站,其中我的应用程序在端口 3000 上监听。我有另一个应用程序位于 3001 上,它是为网站提供内容的同一目录的一部分端口 3000。

我想做什么。

任何访问 mydomain.com:3001 的人都会被提示输入 auth_basic 凭据。任何访问 mydomain.com 的人都可以正常通过。

我当前的 nginx 配置:

upstream app_example {
      server 127.0.0.1:3000;
      keepalive 64;
}

server {
      root /var/www/example;
      listen 0.0.0.0:80;
      server_name example.com example;
      access_log /var/log/nginx/app_example.log;
}

会是这样吗?

upstream app_tools {
    server 127.0.0.1:3001;
}

server {
        listen 80;
        server_name example.com example;

        location / {
        auth_basic      "secured site tools";
        auth_basic_user_file /var/www/example/.htpasswd;
            proxy_pass http://app_tools;
        }
}

最佳答案

您需要为 mydomain.com:3001mydomain.com 创建不同的服务器

upstream app_tools {
      server 127.0.0.1:3000;
      keepalive 64;
}


server {
      root /var/www/example;
      listen 0.0.0.0:80;
      server_name mydomain.com;
      access_log /var/log/nginx/app_example.log;
      location / {
            proxy_pass http://app_tools;
      }  
}


server {
      root /var/www/example;
      listen 0.0.0.0:3001;
      server_name mydomain.com;
      access_log /var/log/nginx/app_example_secure.log;
      location / {
            auth_basic      "secured site tools";
            auth_basic_user_file /var/www/example/.htpasswd;
            proxy_pass http://app_tools;
      }  
}

但请记住什么是通过默默无闻来确保安全 - 坏主意。

关于nginx - 在不同端口上使用 nginx 的 Http 基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24598113/

相关文章:

node.js - 哪个最有效 : serving static files directly by nginx or by node via nginx reverse proxy?

iphone - 在 iPhone 上定义来自 Web 服务器的 URL

.htaccess - 密码使用.htaccess保护单个文件

nginx - 如何在 Play Framework 2 中获取用户的 IP?

ubuntu - Nginx + Passenger + Rails - 403 禁止

tomcat - 多个 Https Tomcat 连接器,一个需要客户端身份验证,一个不需要

javascript - 浏览器如何需要 .js 文件?

php - 如何在 .htpasswd 文件中使用 md5 密码?

apache - .htaccess 虚拟主机的基本身份验证?

django - Nginx不提供静态服务