В производстве мы запускаем tomcat за apache, в разработке bare tomcat. Как я могу узнать внутри класса Servlet, если он работает за Apache или нет?Как узнать, работает ли Tomcat за Apache?
ответ
Это зависит от того, как Apache разговаривает с Tomcat.
Если он подключен через HTTP (mod_proxy), вы можете проверить request.getRemoteAddr(). Это будет IP-адрес Apache, возможно, ваш внутренний IP-адрес. Вы также можете проверить заголовок «Via», чтобы узнать, есть ли Apache.
Если он подключен через AJP (mod_jk/mod_proxy_ajp), вы можете проверить request.getLocalPort(), чтобы узнать, является ли это портом вашего JK-коннектора.
Если это необходимо для разграничения между производственной и производственной средой, то вам, вероятно, будет лучше, если бы это полностью под вашим контролем, а не ad-hoc угадывание (которое в конечном итоге сломается).
Это может быть «Есть функция X, установленная в JNDI?» или «Свойство foo.bar установлено в c: /ourproject.properties». Вы не должны полагаться на такие артефакты, как «класс X, загруженный из файла или найденный в банке» (так как это изменится, если вы измените серверы приложений) или «Будет ли HTTP-строка заголовка X присутствовать», поскольку это вне вашего контроля плюс это может нарушиться, если кто-то другой использует Apache в качестве стороннего accellerator.
Таким образом, явная конфигурация - это можно сделать довольно легко :)
- 1. Tomcat за Apache и SSL
- 2. Как замаскировать приложение tomcat за поддоменом apache?
- 3. Работает ли Apache camel cdi с Tomcat?
- 4. Tomcat за Apache: использование SSL с j_security_check
- 5. 302 redirect, Tomcat за Apache для hybris
- 6. Как узнать, остановился ли Tomcat с пакетом
- 7. Jira, Tomcat и JBoss за Apache
- 8. Apache перед Tomcat не работает
- 9. .htaccess не работает apache-tomcat
- 10. Обратный просмотр веб-приложений Tomcat за Apache
- 11. Требует ли Tomcat Apache httpd?
- 12. Ли Apache обнаруживает процесс передислокации tomcat?
- 13. Как узнать, работает ли вибратор?
- 14. Apache shiro - как узнать, что кеширование работает для авторизации?
- 15. Как узнать, работает ли main()?
- 16. работает gitlabci за apache proxy
- 17. Apache Tomcat sendRedirect
- 18. Как узнать, работает ли Spork?
- 19. Как узнать, работает ли setFetchBatchSize?
- 20. Как узнать, работает ли OpenMP?
- 21. Как узнать, работает ли ajax?
- 22. Как узнать, работает ли Socket.Send()?
- 23. Как узнать, работает ли NSURLCache?
- 24. Как узнать, работает ли XMLHttpRequest.send()
- 25. Как узнать, работает ли AnimationTimer?
- 26. Как узнать, работает ли процесс?
- 27. Как узнать, работает ли таймер?
- 28. Как узнать, работает ли CouchDB?
- 29. Как узнать, работает ли экран?
- 30. Как узнать, работает ли IPython?
Если вы добавите _why_, вы хотите сделать это, мы сможем помочь решить вашу проблему, вместо ответа на вопрос .. – Tim
У вас может быть apache добавить пользовательский HTTP-заголовок. Я считаю, что это довольно легко. Теперь это предполагает, что вы контролируете свою производственную среду - как заметил один из комментаторов ниже, если вы этого не сделаете, заголовок может потеряться .. – MJB