#java #spring-boot #nginx #deployment #tomcat8
#java #spring-boot #nginx #развертывание #tomcat8
Вопрос:
У меня есть приложение Spring Boot, и это REST API для мобильного приложения. Так что локально все работает нормально, но после удаления на удаленном сервере tomcat у него возникают проблемы. Итак, вот мое приложение в диспетчере приложений tomcat
Вот файл properites
server.forward-headers-strategy=framework
spring.freemarker.expose-request-attributes=true
spring.freemarker.suffix= .ftl
# location of the swagger json
spring.data.mongodb.authentication-database=aibolitDB
spring.data.mongodb.username=admin
spring.data.mongodb.password=admin
spring.data.mongodb.database=aibolitDB
spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost
springdoc.swagger-ui.path=/swagger-ui-aibolit.html
spring.servlet.multipart.max-file-size=256MB
spring.servlet.multipart.max-request-size=256MB
spring.servlet.multipart.enabled=true
app.url.base=http://aibolitbackend.unitbeandev.com/
ub.vet.jwtSecret= bezKoderSecretKey
ub.vet.jwtExpirationMs= 86400000
logging.level.org.springframework.web = trace
logging.level.org.apache = trace
И когда
Я пытаюсь отправить запрос api, он выдает ошибку
Как вы можете видеть, оно пытается найти в /AibolitBackend/ path Здесь мои свойства NGINX
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/AibolitBackend/;
# try_files $uri $uri/ =404;
}
Что я забыл настроить? Нужно ли мне что-то добавить к хостам Tomcat?? И я не могу сделать это на базе / пути, потому что здесь будет 3 приложения.
Ответ №1:
У вас странное сочетание try_files
proxy_pass
директив и в одном и том же месте. Это не имеет никакого смысла. Обычно для обслуживания статических файлов с помощью nginx и передачи других запросов на серверную часть вы должны использовать что-то вроде
location /
# First attempt to serve request as static file, then pass request to the backend
root <set_correct_root_for_your_static_files_here!>;
try_files $uri @tomcat;
}
location @tomcat {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
При proxy_pass http://127.0.0.1:8080/AibolitBackend/;
этом вы получаете любой запрос, подобный /some/path
преобразованному /AibolitBackend/some/path
, перед тем, как перейти к серверной части. Я не понял, чего вы хотите достичь с помощью этого /AibolitBackend/
префикса.
Комментарии:
1. Да, я хочу, чтобы tp получил доступ к rest без /AibolitBackend/ . Это должно быть похоже aibolitbackend.unitbeandev.com/public/api ***
2. Чем запросы к REST API отличаются от других? Любой запрос, начинающийся с
/public/api
, является запросом REST?