У меня есть домен, размещенный на неуправляемом сервере VPS с Ubuntu 16.04. Я настроил свое веб-приложение Java EE Tomcat для обслуживания на моем доменном имени. Но время отклика для приложения слишком велико, и время ожидания в браузере постепенно увеличивается. Если я остановлю службу apache2 и получу доступ к своему веб-приложению через domain: 8080, производительность веб-приложения будет идеальной. Как правильно настроить apache2 для обслуживания веб-приложения tomcat на доменном имени с хорошей производительностью? Я понимаю, что простое решение - связать все ссылки на мое веб-приложение с доменом: 8080, но я хотел бы знать, как правильно настроить apache2 для обслуживания веб-приложения Tomcat в домене с той же производительностью, что и при использовании домена: 8080 . Заранее благодарю за любую помощь.
Это мой файл, доступный для сайтов apache2 для домена:
<VirtualHost *:80>
# Admin email, Server Name (domain name) and any aliases
ServerAdmin webmaster@lae-laeweb.com
ServerName lae-laeweb.com
ServerAlias www.lae-laeweb.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html
DocumentRoot /var/www/html
# Custom log file locations
LogLevel warn
ErrorLog /var/log/apache2/error-lae-laeweb.com.log
CustomLog /var/log/apache2/access-lae-laeweb.com.log combined
#ServerName www.lae-laeweb.com
ProxyRequests On
ProxyPass / http://lae-laeweb.com:8080/LAEWeb/ keepalive=on ttl=60
ProxyPassReverse / http://lae-laeweb.com:8080/LAEWeb/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Это сценарий, который я использую после загрузки нового файла .war для моего веб-приложения в tomcat:
#!/bin/bash
cd ../usr/local/apache-tomcat-8.5.23/bin
./shutdown.sh
./startup.sh
cd ../../../..
service apache2 reload
service apache2 restart
service=apache2
if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))
then
echo "$service is running!!!"
else
/etc/init.d/$service restart
fi
server.xml для tomcat:
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="60000"
redirectPort="8443"
maxThreads="200" acceptCount="100" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" connectionTimeout="60000" />
<Engine name="Catalina" defaultHost="lae-laeweb.com:8080">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="lae-laeweb.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>www.lae-laeweb.com</Alias>
<Context path="" docBase="/usr/local/apache-tomcat-8.5.23/webapps/LAEWeb" debug="0" privileged="true" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" resolveHosts="false" />
</Host>
</Engine>
</Service>
</Server>
При использовании apache в качестве прокси-сервера, подверженного задержкам в сети, вы должны настроить буферизацию для повышения производительности. Как доступно на документацияпопробуйте добавить это в свой файл виртуального хоста:
<VirtualHost *:80>
...
ProxyRequests On
ProxyReceiveBufferSize 512
ProxyPass / http://lae-laeweb.com:8080/LAEWeb/ keepalive=on ttl=60
ProxyPassReverse / http://lae-laeweb.com:8080/LAEWeb/
...
Как предлагается в документации, избегайте значений в буфере ниже 512 и поэкспериментируйте с более высокими значениями, чтобы увидеть, повысится ли производительность в конечном итоге. Здесь нет универсального решения.
Нашел проблему. Вы должны установить «ProxyRequests Off» в файле domain.conf в папке apache2 / sites-available. Теперь все работает нормально. Спасибо всем плакатам. Очень признателен.