Ошибка 403 "Forbidden" в вашем случае возникает из-за настроек Nginx по умолчанию, которые не позволяют доступ к директориям, если не настроены права доступа.
В вашем конфигурационном файле Nginx в обработчике для `/projects` не выполнено указание на файл по умолчанию `index.html`, который должен загружаться, если запрос идет на директорию. Чтобы исправить эту ошибку, вам нужно убедиться, что Nginx правильно обрабатывает запросы к этому пути.
Давайте рассмотрим ваше текущее состояние и предложим изменения.
1. **Обновите конфигурацию для /projects:**
Измените секцию Nginx для `/projects` следующим образом:
```nginx
location /projects {
alias /usr/share/nginx/html/projects; # путь к директории с файлами
index index.html; # задаем index файл
try_files $uri $uri/ /projects/index.html; # пробуем отдать запрашиваемый файл, или index.html
}
```
Обратите внимание на использование `alias`, который позволяет выставить доступ к директории. Это поможет Nginx понять, что нужно искать файлы в указанной директории.
2. **Права доступа:**
Проверьте права доступа к директории `/usr/share/nginx/html/projects`. Убедитесь, что пользователь, под которым работает Nginx, имеет доступ на чтение этой директории. Это можно проверить и исправить, выполнив команды:
```bash
sudo chown -R www-data:www-data /usr/share/nginx/html/projects
sudo chmod -R 755 /usr/share/nginx/html/projects
```
Здесь `www-data` - стандартный пользователь для Nginx, используемый на многих системах, но может отличаться в зависимости от конфигурации вашего сервера.
3. **Проверка конфигурации и перезагрузка Nginx:**
После внесения изменений в конфигурацию не забудьте проверить конфигурацию на ошибки:
```bash
sudo nginx -t
```
Если ошибок нет, перезагрузите Nginx:
```bash
sudo systemctl restart nginx
```
Или, если используете Docker, вам нужно будет пересобрать и перезапустить контейнер.
4. **Проверка Docker-контейнера:**
Если вы работаете с Docker и у вас несколько контейнеров, убедитесь, что запросы проходят сначала через ваш контейнер с приложением Vue, и оттуда передаются к контейнеру Nginx. Ваша конфигурация должна быть синхронизирована с тем, как устроены ваши Docker-сервисы.
### Окончательная конфигурация
Ваш окончательный конфиг для Nginx может выглядеть следующим образом, если вы хотите поддерживать все функции, которые у вас уже есть:
```nginx
server {
listen 80;
server_name zaralx.ru;
location / {
proxy_pass http://localhost:13111;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /projects {
alias /usr/share/nginx/html/projects; # Убедитесь, что это правильный путь
index index.html;
try_files $uri $uri/ /projects/index.html;
}
error_page 403 /403.html; # Создайте 403.html для для более удобных сообщений об ошибках
}
```
После выполнения всех этих шагов у вас должно быть исправлено отображение проекта по адресу `/projects`.