использование косой черты в конфигурации nginx

8
    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;
    }
barteloma
источник

Ответы:

10

Эти места разные. Первый из них будет соответствовать, /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;
}
Алексей Тен
источник
Я использую proxy_pass myip: 8080 / product , затем вызываю браузер по этому адресу. Браузер перенаправляет меня на myip / product и выдает ошибку страницу не может просмотреть.
бартелома
Используйте backticks для кода. Markdown проанализировал ваш комментарий, и трудно понять, каков ваш код на самом деле.
Алексей Тен
Спасибо, важно было знать, что если / product / будет добавлен, то даже браузер отправит его / product обязательно получит 301 с сервера. Вполне допустимый момент действительно.
Sur Max
3

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

location ~ /product/?

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

Андрей М.
источник