In my project, web app is developed using Spring boot with default tomcat server. I am using NGINX as load-balancer and have configured my spring-boot-web-app in NGINX configuration as follows:
location /spring-boot-web-app {
proxy_pass http://spring-boot-web-app/
}
http {
upstream /spring-boot-web-app {
server <IP_of_spring_boot_app>:<Port_of_spring_boot_app>
}
}
Now lets say NGINX IP and port as nginx_ip and nginx_port respectively. Also working URL for my web app as: http://web_app_ip:web_app_port/rest/echo/hi
The above URL works fine. But when i try to hit same URI via NGINX it throws 404. URL used via NGINX as: http://nginx_ip:nginx_port/spring-boot-web-app/rest/echo/hi
Is there something i am missing?
NGINX Unit to the Rescue! Unit also enables you to configure HTTP and HTTPS interfaces independently of the applications using them. Let's explore this powerful feature with our Spring Boot API example. First, we have to build the Spring Boot application for our Unit server.
Now that the Spring application is running as a service, an NGINX proxy allows opening the application to an unprivileged port and setting up SSL. The application is now accessible through the browser.
You cannot deploy using . war files. The application files need to be deployed into a folder, because the Java web application folder must be specified for NGINX so that it can find and directly send static files like images (.
Nginx is a HTTP server. It can't run Jar files (or any Java code).
This works for me. Can you try this?
Running tomcat
docker run -d -p 8080:8080 --name=tomcat tomcat:8
Running nginx
docker run -d -p 80:80 --link tomcat:tomcat --name=nginx nginx
Go inside nginx container and update the conf
docker exec -it nginx bash
/etc/nginx/nginx.conf:
server {
listen 80 default_server;
server_name subdomain.domain.com;
location / {
proxy_pass http://tomcat:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Restart nginx service
nginx -s reload
Access the tomcat through nginx from host browser. You may need to add entry to /etc/hosts
http://subdomain.domain.com
Complete nginx conf: nginx.conf
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With