我在 Windows(开发机器)上使用 nginx 1.6.2,遇到一个问题,它总是会text/plain
为任何文件的标头返回一个值Content-Type
。这是一个问题,因为浏览器不会渲染 CSS、计算 JS 等。
默认情况下,我没有默认的 nginx.config 文件(与 Linux 不同),因此我必须从头开始构建它,同时保持其最小化。通常,我的问题可以通过包含来解决,etc/nginx/mime.types
因此我从我拥有的 CentOS 服务器复制/粘贴了该文件。但这似乎没有任何效果。我试图故意将包含路径弄错,结果引发了错误,所以我认为当我将其改正时,它实际上被正确解析了。
所以我完全不知道为什么 nginx 对我收到的每一个罚款都返回 text/plain。
这是我的 nginx.conf 文件:
events {
worker_connections 1024;
}
http {
include D:/dev/nginx/mime.types;
expires off;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log D:/dev/nginx/logs/access.log main;
error_log D:/dev/nginx/logs/error.log;
upstream backend {
server localhost:62755;
}
server {
listen 80;
server_name localhost;
client_body_temp_path D:/dev/nginx/client_body_temp;
proxy_temp_path D:/dev/nginx/proxy_temp;
location / {
root D:/dev/frontend/src;
index index.html;
}
location /api {
proxy_pass http://backend;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
}
答案1
我的问题是,即使按下 CTLR+C,nginx 实例也不会被终止。我进入任务管理器时发现了这个问题。显然,旧实例保持旧版本的配置运行,并且是第一个拦截请求的实例,因此即使更改了 nginx.conf,更改也不会应用。
终止所有处理后,我的最新配置(包含 mime.types 的配置)被考虑在内,从而解决了该问题。