gpt4 book ai didi

Nginx 忽略位置指令?

转载 作者:行者123 更新时间:2023-12-01 02:32:43 27 4
gpt4 key购买 nike

我已经阅读了文档,扫描了示例,但我一生都无法弄清楚为什么这不起作用。我对 nginx 完全陌生,所以如果这是一个愚蠢的简单答案,请放轻松。

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
worker_connections 768;
# multi_accept on;
}

http {

##
# Basic Settings
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# Logging Settings
##

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

##
# Virtual Host Configs
##

#include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;

server {
listen 80;
server_name localhost domain.com;

root /home/TMlabs/server_files;
index index.html index.htm;

location = /othersite {
root /home/TMlabs/server_files/location2;
index index.html index.htm;
}

location / {
root /home/TMlabs/server_files/location1;
index index.html index.htm;
}

}

如果我需要包含更多内容,请告诉我,我会转储整个 nginx.conf。不过,这是非常基本的。

我想要实现的只是将 domain.com 映射到位置 / 中指定的根目录(正在运行)和映射 domain.com/othersite到该指令中指定的根。出于某种原因,它返回 /home/TMlabs/server_files/location1/index.html当我导航到 domain.com/othersite 时的文档而不是 index.html来自 /home/TMlabs/server_files/location2 的文件文件夹。我尝试删除等号并使用可用于匹配的不同运算符,但似乎没有任何效果。这可能是我误解的非常基本的东西,对这些东西不熟悉。我也很讨厌正则表达式。有人关心启蒙吗?

编辑:我认为正在发生的事情是它实际上完全忽略了我的指令并且只是使用 /usr/share/nginx/www作为文档根。我在任何地方都没有看到这个配置;我错过了什么?

最佳答案

=前缀意味着指定的位置应该与请求的 URL 完全匹配。如果你查看错误日志,你会看到 Nginx 尝试提供文件[...]/location2/otherside ,而不是 [...]/location2/index.{html,htm} . (为简单起见省略了完整路径)index指令是精确匹配位置内的 noop。
要解决此问题,您可以将文件重命名为 otherside并有这个配置

location = /otherside {
root /home/TMlabs/server_files/location2;
}
或使用 alias指示
location = /otherside {
alias [...]/location2/index.html;
}
PS:Nginx 会尝试计算 Content-Type通过 URL 的扩展响应。自 /otherside没有扩展名,它将使用 application/octet-stream导致浏览器 try and download the content .
您可以包括 .html扩展名,或使用 default_type内部指令 location
default_type "text/html";

关于Nginx 忽略位置指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116658/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com