Назад | Перейти на главную страницу

использование завершающих слэшей в конфигурации nginx

    location /product {
        proxy_pass http://10.0.0.25:8080;
    }

если я использую свое первое описание местоположения для папки продукта, я должен использовать http://mysdomain.com/product/ и я не могу использовать http://mysdomain.com/product из браузера. Я имею в виду, что я должен использовать косую черту в конце URL. Я хочу получить доступ к папке продукта с двумя состояниями.

есть ли разница между этим:

    location /product/ {
        proxy_pass http://10.0.0.25:8080;
    }

Эти места разные. Первый совпадет /production например, это могло быть не то, что вы ожидали. Поэтому я предпочитаю использовать местоположения с косой чертой в конце.

Также обратите внимание, что:

Если расположение определяется строкой префикса, которая заканчивается символом косой черты, и запросы обрабатываются одним из proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass или memcached_pass, затем в ответ на запрос с URI, равным этой строке, но без косой черты в конце, постоянное перенаправление с кодом 301 будет возвращено на запрошенный URI с добавленной косой чертой.

Если у вас есть что-то вроде:

location /product/ {
    proxy_pass http://backend;
}

и перейти к http://example.com/product, nginx автоматически перенаправит вас на http://example.com/product/.

Даже если вы не используете одну из этих директив выше, вы всегда можете выполнить перенаправление вручную:

location = /product {
    rewrite ^ /product/ permanent;
}

или, если вы не хотите перенаправления, вы можете использовать:

location = /product {
    proxy_pass http://backend;
}

Нет, это не одно и то же - вам нужно будет использовать завершающую косую черту с регулярным выражением, чтобы соответствовать обоим, т.е.

location ~ /product/?

Видеть этот связанный ответ для более подробного ответа о том, как сопоставить весь URL.