Skip to content

Nginx 在 Windows 上的基本配置示例

帮我写一个 nginx 配置文件 Windows,

  1. 当我 访问开头 /ya 的时候 使用 D:/Desktop/ya 目录下的代码,并且停止匹配其他的 location

  2. 当我访问 / 非 /ya 开头的时候 使用 D:/Desktop/vite4-vue3-app2/rd 目录下的代码

您的 Nginx 配置文件可能会是这样的:

nginx
worker_processes 1;

events {
    worker_connections 1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        # 对于 /ya 开头的路径
        location ^~ /ya/ {
            alias D:/Desktop/ya;
            try_files $uri $uri/ =404;
        }

        # 对于非 /ya 开头的路径
        location / {
            root D:/Desktop/vite4-vue3-app2/rd;
            index index.html index.htm;
            try_files $uri $uri/ =404;
        }
    }
}

这个配置文件做了以下操作:

  1. 对于以 /ya 开头的路径,它会使用 D:/Desktop/ya 目录下的代码。 ^~ 表示当有正则和非正则 location 匹配时,优先考虑非正则。

  2. 对于非 /ya 开头的路径,它会使用 D:/Desktop/vite4-vue3-app2/rd 目录下的代码。

请注意,您可能需要根据您的特定需求和环境来修改这个配置。例如,如果您希望使用一个特定的主机名,而不是 localhost,那么您就需要更改 server_name 指令。此外,您可能还需要调整监听的端口(listen 指令)。

此外,对于 Windows 用户来说,Nginx 配置文件中的目录路径应当使用正斜杠 / 而不是反斜杠 \

请确保这个配置文件符合您的实际需求,然后将其保存为一个 .conf 文件,并将其放在 Nginx 的 conf 目录中,或者在 nginx.conf 文件中使用 include 指令来包含它。

最后,记得重启 Nginx 以应用新的配置。

为什么/ya 用的是 alias 而不是 root,为什么 /ya 没有 index

在 Nginx 配置中,rootalias 有不同的含义和使用场景。让我们详细看一下。

root 的含义是,为请求提供文件时,将请求的 URL 附加到 root 指令定义的路径后面。例如,如果你的 root/var/www,然后用户请求 /images/example.jpg,那么 Nginx 会尝试从 /var/www/images/example.jpg 提供文件。

另一方面,alias 是用来将请求的 URL 替换为 alias 指令定义的路径。例如,如果你的 location/images/,并且 alias/var/www/,那么当用户请求 /images/example.jpg 时,Nginx 会尝试从 /var/www/example.jpg 提供文件。

因此,在这个配置中,我们使用 alias 是因为我们希望 /ya 后面的路径部分被直接附加到 D:/Desktop/ya 路径后面,而不是把 /ya 也包含进去。

至于为什么没有 index,这是因为在这个配置中,我们假设 /ya 路径下是用于 API 或者动态内容,可能不需要默认的索引文件。如果在 /ya 下需要使用默认索引文件,比如 index.html,那么可以像这样添加 index 指令:

nginx
location ^~ /ya/ {
    alias D:/Desktop/ya;
    index index.html;
    try_files $uri $uri/ =404;
}

这样,如果用户访问 /ya,Nginx 会尝试提供 D:/Desktop/ya/index.html 文件。然而,如前所述,此配置是否适用于你,取决于你的具体需求。