docker - 来自 nginx 的未知“服务器”变量
问题描述
我正在将容器化的 nginx 服务器部署到 AWS 上。但是,当我尝试访问它时,我从浏览器收到“无法连接”错误。日志文件给我错误:nginx: [emerg] unknown "server" variable
这是我的 prod.conf 文件:
server {
listen 80;
location / {
proxy_pass http://users:5000;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server-name;
}
}
这是在 Dockerfile-prod 文件中:
FROM nginx:1.15.8-alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY /prod.conf /etc/nginx/conf.d
撰写-prod.yml 文件:
version: '3.7'
services:
users:
build:
context: ./services/users
dockerfile: Dockerfile-prod
expose:
- '5000'
environment:
- FLASK_ENV=production
- APP_SETTINGS=project.config.ProductionConfig
- DATABASE_URL=postgres://postgres:postgres@users-db:5432/users_prod
- DATABASE_TEST_URL=postgres://postgres:postgres@users-db:5432/users_test
depends_on:
- users-db
users-db:
build:
context: ./services/users/project/db
dockerfile: Dockerfile
expose:
- '5432'
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
nginx:
build:
context: ./services/nginx
dockerfile: Dockerfile-prod
restart: always
ports:
- 80:80
depends_on:
- users
为什么它给我这个错误?
解决方案
您应该使用$server_name
下划线而不是$server-name
http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name
推荐阅读
- eslint - ESlint 规则在 else 块之前在块中添加空间
- angular - 仅当先前的错误处理成功时,如何执行一系列 http 调用?
- ubuntu - 使用 NGINX 作为 Postgres 代理的超时问题
- firebase - 在云函数中,每次读取一个值的 2 次更好还是 1 次读取大约 20 个字段更好?
- javascript - JavaScript - 函数问题
- ios - 将云功能连接到 iOS 应用程序以立即发送大量推送通知
- c# - 接收 LINQ 查询时,DataGridView 的功能与 GridView 不同吗?
- google-tag-manager - 浏览量触发器未在 gtm.dom 或 gtm.load 上触发 | 谷歌标签管理器
- python - 在没有科学计数法的情况下将浮点数转换为字符串
- pandas - 如何将年、日、月转换为日期时间?