我有一个带有反向前端代理的网站,其中我的应用程序在端口 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:3001
和 mydomain.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/