我学习本教程是为了了解反向代理https://www.youtube.com/watch?v=ZmH1L1QeNHk&t=227s
我运行这个Docker图像
sudo docker run -d --name nginx-base -p 80:80 nginx:latest
我可以编辑默认的.conf文件
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /test {
proxy_pass http://localhost:8086/test;
}
location /home {
proxy_pass http://localhost:3000;
}
location /home/auth {
proxy_pass http://localhost:3000/auth;
}
#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;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
当我进入http://localhost/时,我会看到Nginx欢迎屏幕
但当我尝试访问http://localhost/test或http://localhost/home时
此外,我还可以访问localhost:3000
和localhost:8086/test
不知道为什么nginx抛出502,我错过了任何配置?
1条答案
按热度按时间omvjsjqw1#
Bad Gateway 502通常表示您的目标服务器没有响应。我假设您的其他服务也是Docker容器?如果是这样的话,您可以尝试将localhost更改为它们的容器名称并使用Docker-dns。但是您需要将所有容器放在同一个网络中才能使其工作。
另一件要尝试的事情是颠倒你的路由顺序。如果我没记错的话,nginx会选择第一个匹配的路由。在你的例子中,/匹配每一个其他的路由,所以每个请求都被定向到你的nginx。但是你的nginx不能处理/test或/home。
我希望这能帮助你找到问题所在。