嗨,这可能是一个新手问题。
我正在尝试复制使用 nginx 作为 Web 服务器时出现的 502 bad gateway 错误。我在本地运行 Ubuntu 20.04.6 LTS 虚拟机,并在该虚拟机上使用以下命令新安装了 nginx
sudo apt-get install nginx
然后
nginx -v
返回
nginx version: nginx/1.18.0 (Ubuntu)
并通过命令验证它正在运行
systemctl status nginx
这表明它正在运行。
然后我用一个简单的Dockerfile创建了一个docker容器:
# Use the official Node.js image with Alpine Linux as the base image
FROM node:14-alpine
# Set the working directory in the container
WORKDIR /usr/src/app
# Copy package.json and package-lock.json to the working directory
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy the rest of the application code to the working directory
COPY . .
# Expose the port that the app will run on
EXPOSE 9000
# Define the command to run your application
CMD ["node", "app.js"]
这是 app.js 文件
// app.js
const express = require('express');
const app = express();
const port = 9000;
app.get('/', (req, res) => {
res.send('<h1>Hello, Docker World!</h1>');
});
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
当我访问 localhost:9000 时,它会返回网页“Hello, Docker World!”
接下来我想使用 nginx web 服务器为这个 localhost:9000 提供服务。然后我将关闭 docker 容器,以尝试从 nginx web 服务器生成坏网关错误响应。
答案1
首先,打开位于 /etc/nginx/sites-enabled/default 的配置文件。
检查文件的内容;您会很容易找到location /
。在文件内添加以下三行代理行location /
。
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:9000;
}
然后,重新启动 Nginx 服务,一切就绪了。
systemctl restart nginx
查看有关 Nginx 反向代理的案例研究教程:如何通过示例设置 Nginx 反向代理服务器”
答案2
您需要将docker容器9000端口绑定到您的localhost。使用以下命令进行绑定。
docker run -d -p 9000:9000 <your_container_image>
答案3
您是否在 nginx 配置中添加了这些行来配置从 9000 到 80 端口的反向代理。
location /some/path/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8000;
}
如果已经添加了此共享您的nginx -t
命令输出并检查您的日志