{"id":34839,"date":"2025-11-22T17:40:50","date_gmt":"2025-11-22T14:40:50","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34839"},"modified":"2025-11-22T17:40:50","modified_gmt":"2025-11-22T14:40:50","slug":"tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/","title":{"rendered":"Tomcat 10&#8217;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme"},"content":{"rendered":"<p><body><\/p>\n<h2>Tomcat 10&#8217;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme<\/h2>\n<h3>Giri\u015f: Web Uygulamalar\u0131n\u0131n Kalbi Tomcat ve G\u00fcvenli\u011fin \u00d6nemi<\/h3>\n<p>Apache Tomcat, Java tabanl\u0131 web uygulamalar\u0131n\u0131 bar\u0131nd\u0131rmak i\u00e7in yayg\u0131n olarak kullan\u0131lan a\u00e7\u0131k kaynakl\u0131 bir web sunucusudur ve ayn\u0131 zamanda bir servlet konteyneridir. D\u00fcnya genelinde milyonlarca kurumsal ve ki\u015fisel web uygulamas\u0131na g\u00fc\u00e7 veren Tomcat, esnekli\u011fi ve geni\u015f topluluk deste\u011fi sayesinde pop\u00fclerli\u011fini korumaktad\u0131r. Ancak, herhangi bir internete a\u00e7\u0131k hizmet gibi, Tomcat de do\u011fru \u015fekilde yap\u0131land\u0131r\u0131lmad\u0131\u011f\u0131nda g\u00fcvenlik a\u00e7\u0131klar\u0131 bar\u0131nd\u0131rabilir. Bu a\u00e7\u0131klar\u0131 kapatmak ve uygulamalar\u0131m\u0131z\u0131 k\u00f6t\u00fc niyetli sald\u0131r\u0131lardan korumak, modern web altyap\u0131lar\u0131n\u0131n temel bir gereklili\u011fidir.<\/p>\n<p>Tek ba\u015f\u0131na \u00e7al\u0131\u015fan bir Tomcat sunucusu, g\u00fcvenlik, performans ve y\u00f6netim a\u00e7\u0131s\u0131ndan baz\u0131 s\u0131n\u0131rlamalara sahip olabilir. \u00d6zellikle SSL\/TLS sonland\u0131rma, y\u00fck dengeleme, statik i\u00e7erik sunumu ve geli\u015fmi\u015f g\u00fcvenlik politikalar\u0131 gibi konularda, Apache HTTP Sunucusu veya Nginx gibi g\u00fc\u00e7l\u00fc ters proxy&#8217;ler devreye girer. Bu ters proxy&#8217;ler, Tomcat&#8217;in \u00f6n\u00fcnde bir katman olu\u015fturarak gelen istekleri y\u00f6netir, zararl\u0131 trafi\u011fi filtreler ve Tomcat sunucusunu do\u011frudan internete maruz kalmaktan korur. Bu makalede, Ubuntu 20.04 i\u015fletim sistemi \u00fczerinde Tomcat 10&#8217;u Apache veya Nginx ile nas\u0131l g\u00fcvenli bir \u015fekilde yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, hem Tomcat&#8217;in i\u00e7 g\u00fcvenlik ayarlar\u0131n\u0131 g\u00fc\u00e7lendirmek hem de bir ters proxy kullanarak \u00e7ok katmanl\u0131 bir savunma mekanizmas\u0131 olu\u015fturmakt\u0131r.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>Bu makaledeki ad\u0131mlar\u0131 takip edebilmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6n ko\u015fullar\u0131n sa\u011flanm\u0131\u015f olmas\u0131 gerekmektedir:<br \/>\n*   <strong>Ubuntu 20.04 LTS Sunucu:<\/strong> Temiz bir Ubuntu 20.04 kurulumuna sahip, root veya sudo yetkilerine sahip bir kullan\u0131c\u0131.<br \/>\n*   <strong>Java Geli\u015ftirme Kiti (JDK):<\/strong> Tomcat 10, Java 8 veya \u00fczeri bir s\u00fcr\u00fcm gerektirir. OpenJDK 11 veya 17 \u00f6nerilir.<br \/>\n*   <strong>Apache Tomcat 10:<\/strong> En son kararl\u0131 s\u00fcr\u00fcm\u00fc kullanaca\u011f\u0131z.<br \/>\n*   <strong>Apache HTTP Sunucusu veya Nginx:<\/strong> Tercihinize g\u00f6re bir ters proxy sunucusu.<br \/>\n*   <strong>Alan Ad\u0131 (Domain Name):<\/strong> SSL\/TLS sertifikas\u0131 almak ve ters proxy&#8217;yi yap\u0131land\u0131rmak i\u00e7in bir alan ad\u0131na sahip olman\u0131z \u00f6nerilir.<\/p>\n<h3>Tomcat 10 Kurulumu ve Temel Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Tomcat&#8217;i kurmadan \u00f6nce Java&#8217;y\u0131 kurmal\u0131 ve Tomcat i\u00e7in ayr\u0131 bir kullan\u0131c\u0131 olu\u015fturarak g\u00fcvenlik risklerini azaltmal\u0131y\u0131z.<\/p>\n<h4>Java Kurulumu<\/h4>\n<p>Tomcat 10 i\u00e7in OpenJDK 11&#8217;i kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install openjdk-11-jdk -y<\/code><\/pre>\n<p>Kurulumu do\u011frulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">java -version<\/code><\/pre>\n<h4>Tomcat Kullan\u0131c\u0131s\u0131 Olu\u015fturma<\/h4>\n<p>Tomcat&#8217;i <code>root<\/code> kullan\u0131c\u0131s\u0131 yerine ayr\u0131 bir kullan\u0131c\u0131 alt\u0131nda \u00e7al\u0131\u015ft\u0131rmak, g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir.<\/p>\n<pre><code class=\"language-bash\">sudo groupadd tomcat\nsudo useradd -s \/bin\/false -g tomcat -d \/opt\/tomcat tomcat<\/code><\/pre>\n<h4>Tomcat 10 \u0130ndirme ve \u00c7\u0131karma<\/h4>\n<p>Tomcat&#8217;in resmi web sitesinden en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc indirin. Bu makale yaz\u0131ld\u0131\u011f\u0131 s\u0131rada Tomcat 10.1.x kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc kullanaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">cd \/tmp\nwget https:\/\/dlcdn.apache.org\/tomcat\/tomcat-10\/v10.1.18\/bin\/apache-tomcat-10.1.18.tar.gz\nsudo mkdir \/opt\/tomcat\nsudo tar xzvf apache-tomcat-10.1.18.tar.gz -C \/opt\/tomcat --strip-components=1<\/code><\/pre>\n<h4>Dosya \u0130zinlerini Ayarlama<\/h4>\n<p>Tomcat kullan\u0131c\u0131s\u0131n\u0131n <code>\/opt\/tomcat<\/code> dizinine ve alt dizinlerine do\u011fru eri\u015fim izinlerine sahip oldu\u011fundan emin olun.<\/p>\n<pre><code class=\"language-bash\">sudo chown -R tomcat:tomcat \/opt\/tomcat\nsudo sh -c 'chmod +x \/opt\/tomcat\/bin\/*.sh'<\/code><\/pre>\n<h4>Systemd Servis Dosyas\u0131 Olu\u015fturma<\/h4>\n<p>Tomcat&#8217;i bir sistem servisi olarak \u00e7al\u0131\u015ft\u0131rmak, y\u00f6netimi kolayla\u015ft\u0131r\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/systemd\/system\/tomcat.service<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-ini\">[Unit]\nDescription=Apache Tomcat Web Application Container\nAfter=network.target\n\n[Service]\nType=forking\n\nEnvironment=\"JAVA_HOME=\/usr\/lib\/jvm\/java-11-openjdk-amd64\"\nEnvironment=\"CATALINA_PID=\/opt\/tomcat\/temp\/tomcat.pid\"\nEnvironment=\"CATALINA_HOME=\/opt\/tomcat\"\nEnvironment=\"CATALINA_BASE=\/opt\/tomcat\"\nEnvironment=\"CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC\"\nEnvironment=\"JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:\/dev\/urandom\"\n\nExecStart=\/opt\/tomcat\/bin\/startup.sh\nExecStop=\/opt\/tomcat\/bin\/shutdown.sh\n\nUser=tomcat\nGroup=tomcat\nUMask=0007\nRestartSec=10\nRestart=always\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<p>Servisi etkinle\u015ftirin ve ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl daemon-reload\nsudo systemctl start tomcat\nsudo systemctl enable tomcat\nsudo systemctl status tomcat<\/code><\/pre>\n<p>Tomcat&#8217;in varsay\u0131lan olarak 8080 portunda \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edin: <code>http:\/\/<sunucu_IP_adresi>:8080<\/code>.<\/p>\n<h4>Tomcat Y\u00f6netici Aray\u00fcz\u00fc Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Tomcat Manager ve Host Manager uygulamalar\u0131na eri\u015fmek i\u00e7in kullan\u0131c\u0131 kimlik bilgileri olu\u015fturmal\u0131s\u0131n\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/opt\/tomcat\/conf\/tomcat-users.xml<\/code><\/pre>\n<p><code><tomcat-users><\/code> etiketinin i\u00e7ine a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin. <code>admin<\/code> ve <code>manager<\/code> i\u00e7in g\u00fc\u00e7l\u00fc parolalar se\u00e7ti\u011finizden emin olun.<\/p>\n<pre><code class=\"language-xml\"><role rolename=\"manager-gui\"\/>\n<role rolename=\"admin-gui\"\/>\n<user username=\"admin\" password=\"GUCLU_PAROLA_1\" roles=\"manager-gui,admin-gui\"\/>\n<user username=\"manager\" password=\"GUCLU_PAROLA_2\" roles=\"manager-gui\"\/><\/code><\/pre>\n<p>Bu kullan\u0131c\u0131lar, Tomcat Manager (uygulama da\u011f\u0131t\u0131m\u0131) ve Host Manager (sanal host y\u00f6netimi) aray\u00fczlerine eri\u015fim sa\u011flar. Bu aray\u00fczlere internetten do\u011frudan eri\u015fimi k\u0131s\u0131tlamak g\u00fcvenlik i\u00e7in \u00e7ok \u00f6nemlidir.<\/p>\n<h3>Tomcat 10 \u0130\u00e7 G\u00fcvenlik En \u0130yi Uygulamalar\u0131<\/h3>\n<p>Ters proxy yap\u0131land\u0131rmas\u0131na ge\u00e7meden \u00f6nce, Tomcat&#8217;in kendi i\u00e7 g\u00fcvenlik ayarlar\u0131n\u0131 g\u00fc\u00e7lendirmek kritik \u00f6neme sahiptir.<\/p>\n<h4>Varsay\u0131lan Uygulamalar\u0131 Kald\u0131rma veya K\u0131s\u0131tlama<\/h4>\n<p>\u00dcretim ortam\u0131nda <code>docs<\/code>, <code>examples<\/code>, <code>host-manager<\/code> ve <code>manager<\/code> gibi varsay\u0131lan uygulamalar\u0131n \u00e7o\u011fu gereksizdir ve potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131 bar\u0131nd\u0131rabilir.<br \/>\n*   <strong>Kald\u0131rma:<\/strong> En g\u00fcvenli y\u00f6ntem, bu dizinleri tamamen silmektir:<\/p>\n<pre><code class=\"language-bash\">sudo rm -rf \/opt\/tomcat\/webapps\/docs\n    sudo rm -rf \/opt\/tomcat\/webapps\/examples<\/code><\/pre>\n<p>*   <strong>K\u0131s\u0131tlama:<\/strong> E\u011fer <code>manager<\/code> veya <code>host-manager<\/code> uygulamalar\u0131n\u0131 kullanman\u0131z gerekiyorsa, eri\u015fimi belirli IP adresleriyle k\u0131s\u0131tlay\u0131n.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/opt\/tomcat\/webapps\/manager\/META-INF\/context.xml\n    sudo nano \/opt\/tomcat\/webapps\/host-manager\/META-INF\/context.xml<\/code><\/pre>\n<p>    <code><Context><\/code> etiketinin i\u00e7ine a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin veya mevcut <code>Valve<\/code> etiketini g\u00fcncelleyin. Kendi IP adresinizi veya g\u00fcvenilir a\u011f IP&#8217;lerinizi <code>allow<\/code> niteli\u011fine ekleyin.<\/p>\n<pre><code class=\"language-xml\"><Valve className=\"org.apache.catalina.valves.RemoteAddrValve\"\n           allow=\"127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1|192\\.168\\.1\\.100\"\/><\/code><\/pre>\n<p>    Bu, yaln\u0131zca belirtilen IP adreslerinden eri\u015fime izin verir.<\/p>\n<h4>AJP Konnekt\u00f6r\u00fcn\u00fc Devre D\u0131\u015f\u0131 B\u0131rakma veya G\u00fcvenli\u011fini Sa\u011flama<\/h4>\n<p>AJP (Apache JServ Protocol), Apache HTTP Sunucusu ile Tomcat aras\u0131nda optimize edilmi\u015f bir ileti\u015fim protokol\u00fcd\u00fcr. Ancak, \u00e7o\u011fu modern kurulumda HTTP proxy yeterlidir ve AJP&#8217;nin yanl\u0131\u015f yap\u0131land\u0131r\u0131lmas\u0131 g\u00fcvenlik riskleri olu\u015fturabilir. E\u011fer kullanm\u0131yorsan\u0131z, AJP konnekt\u00f6r\u00fcn\u00fc devre d\u0131\u015f\u0131 b\u0131rak\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/opt\/tomcat\/conf\/server.xml<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki sat\u0131r\u0131 yorum sat\u0131r\u0131 haline getirin veya silin:<\/p>\n<pre><code class=\"language-xml\"><!-- <Connector port=\"8009\" protocol=\"AJP\/1.3\" redirectPort=\"8443\" \/> --><\/code><\/pre>\n<p>E\u011fer AJP kullanman\u0131z gerekiyorsa, a\u015fa\u011f\u0131daki gibi g\u00fcvenli\u011fini sa\u011flay\u0131n:<\/p>\n<pre><code class=\"language-xml\"><Connector port=\"8009\" protocol=\"AJP\/1.3\" redirectPort=\"8443\" address=\"127.0.0.1\" secretRequired=\"true\" secret=\"GUCLU_AJP_PAROLASI\" \/><\/code><\/pre>\n<p><code>address=\"127.0.0.1\"<\/code> ile yaln\u0131zca yerel makineden eri\u015fime izin verilir ve <code>secret<\/code> niteli\u011fi ile g\u00fc\u00e7l\u00fc bir parola belirlenir. Bu parola, Apache veya Nginx yap\u0131land\u0131rmas\u0131nda da kullan\u0131lacakt\u0131r.<\/p>\n<h4>Tomcat Loglar\u0131n\u0131 Yap\u0131land\u0131rma ve \u0130zleme<\/h4>\n<p>Tomcat&#8217;in loglar\u0131, g\u00fcvenlik olaylar\u0131n\u0131 ve potansiyel sald\u0131r\u0131lar\u0131 tespit etmek i\u00e7in hayati \u00f6neme sahiptir. <code>conf\/logging.properties<\/code> dosyas\u0131n\u0131 inceleyin ve log seviyelerini gerekti\u011fi gibi ayarlay\u0131n. Loglar\u0131 d\u00fczenli olarak izlemek i\u00e7in bir log y\u00f6netim arac\u0131 (\u00f6rn. ELK Stack, Splunk) kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcn.<\/p>\n<h4>JVM G\u00fcvenli\u011fi<\/h4>\n<p>Tomcat&#8217;i \u00e7al\u0131\u015ft\u0131ran JVM&#8217;in g\u00fcvenli\u011fi de \u00f6nemlidir. <code>JAVA_OPTS<\/code> ortam de\u011fi\u015fkeninde <code>java.security.egd=file:\/dev\/.\/urandom<\/code> gibi ayarlar, kriptografik i\u015flemler i\u00e7in daha g\u00fcvenli rastgele say\u0131lar \u00fcretilmesini sa\u011flar. Ayr\u0131ca, JMX (Java Management Extensions) kullan\u0131yorsan\u0131z, eri\u015fimi k\u0131s\u0131tlad\u0131\u011f\u0131n\u0131zdan ve g\u00fc\u00e7l\u00fc kimlik do\u011frulamas\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<p>Tomcat yap\u0131land\u0131rmas\u0131nda yapt\u0131\u011f\u0131n\u0131z her de\u011fi\u015fiklikten sonra Tomcat servisini yeniden ba\u015flatmay\u0131 unutmay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart tomcat<\/code><\/pre>\n<h3>Ters Proxy (Reverse Proxy) Kavram\u0131 ve Avantajlar\u0131<\/h3>\n<p>Ters proxy, istemciden gelen istekleri al\u0131p bir veya daha fazla arka u\u00e7 sunucuya (bu durumda Tomcat) ileten bir sunucudur. \u0130stemci, arka u\u00e7 sunucuyla do\u011frudan ileti\u015fim kurmaz; t\u00fcm ileti\u015fim ters proxy \u00fczerinden ger\u00e7ekle\u015fir. Bu mimari, bir\u00e7ok g\u00fcvenlik ve performans avantaj\u0131 sunar:<br \/>\n*   <strong>G\u00fcvenlik:<\/strong> Arka u\u00e7 sunucular\u0131n IP adreslerini gizler ve onlar\u0131 do\u011frudan internete maruz kalmaktan korur. K\u00f6t\u00fc niyetli istekleri filtreleyebilir ve DDoS sald\u0131r\u0131lar\u0131na kar\u015f\u0131 bir ilk savunma hatt\u0131 olu\u015fturabilir.<br \/>\n*   <strong>SSL\/TLS Sonland\u0131rma:<\/strong> SSL\/TLS \u015fifrelemesini ters proxy \u00fczerinde sonland\u0131rarak arka u\u00e7 sunucular\u0131n bu y\u00fckten kurtulmas\u0131n\u0131 sa\u011flar. Bu, Tomcat&#8217;in daha fazla uygulama iste\u011fi i\u015flemesine olanak tan\u0131r.<br \/>\n*   <strong>Y\u00fck Dengeleme:<\/strong> Gelen trafi\u011fi birden fazla arka u\u00e7 sunucuya da\u011f\u0131tarak y\u00fcksek kullan\u0131labilirlik ve \u00f6l\u00e7eklenebilirlik sa\u011flar.<br \/>\n*   <strong>Statik \u0130\u00e7erik Sunumu:<\/strong> Resimler, CSS ve JavaScript dosyalar\u0131 gibi statik i\u00e7erikleri do\u011frudan ters proxy \u00fczerinden sunarak Tomcat&#8217;in y\u00fck\u00fcn\u00fc azalt\u0131r ve performans\u0131 art\u0131r\u0131r.<br \/>\n*   <strong>Geli\u015fmi\u015f G\u00fcvenlik Ba\u015fl\u0131klar\u0131:<\/strong> HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131 (HSTS, CSP vb.) kolayca uygulayarak modern web g\u00fcvenli\u011fini art\u0131r\u0131r.<br \/>\n*   <strong>URL Yeniden Yazma:<\/strong> Gelen isteklerin URL&#8217;lerini yeniden yazarak daha esnek y\u00f6nlendirme ve SEO dostu URL&#8217;ler sa\u011flar.<\/p>\n<p>\u015eimdi Apache ve Nginx ile bu avantajlar\u0131 nas\u0131l uygulayaca\u011f\u0131m\u0131za bakal\u0131m.<\/p>\n<h3>Apache 2 ile Tomcat&#8217;i G\u00fcvenli Hale Getirme<\/h3>\n<p>Apache HTTP Sunucusu, mod\u00fcler yap\u0131s\u0131 sayesinde g\u00fc\u00e7l\u00fc bir ters proxy olarak g\u00f6rev yapabilir.<\/p>\n<h4>Apache Kurulumu ve Gerekli Mod\u00fclleri Etkinle\u015ftirme<\/h4>\n<pre><code class=\"language-bash\">sudo apt install apache2 -y<\/code><\/pre>\n<p>Gerekli Apache mod\u00fcllerini etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo a2enmod proxy proxy_http proxy_ajp ssl headers rewrite\nsudo systemctl restart apache2<\/code><\/pre>\n<p>*   <code>proxy<\/code>: Temel proxy i\u015flevselli\u011fi.<br \/>\n*   <code>proxy_http<\/code>: HTTP protokol\u00fc \u00fczerinden proxy.<br \/>\n*   <code>proxy_ajp<\/code>: AJP protokol\u00fc \u00fczerinden proxy (e\u011fer kullan\u0131l\u0131yorsa).<br \/>\n*   <code>ssl<\/code>: SSL\/TLS \u015fifrelemesi.<br \/>\n*   <code>headers<\/code>: HTTP ba\u015fl\u0131klar\u0131n\u0131 y\u00f6netme.<br \/>\n*   <code>rewrite<\/code>: URL yeniden yazma.<\/p>\n<h4>Apache Sanal Host Yap\u0131land\u0131rmas\u0131 (HTTP Proxy)<\/h4>\n<p>Tomcat&#8217;i 8080 portundan de\u011fil, standart HTTP portu (80) \u00fczerinden eri\u015filebilir hale getirelim.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/tomcat.conf<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin. <code>example.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131 kullan\u0131n.<\/p>\n<pre><code class=\"language-apache\"><VirtualHost *:80>\n    ServerName example.com\n    ServerAlias www.example.com\n\n    ProxyRequests Off\n    ProxyPreserveHost On\n\n    <Proxy *>\n        Require all granted\n    <\/Proxy>\n\n    ProxyPass \/ http:\/\/127.0.0.1:8080\/\n    ProxyPassReverse \/ http:\/\/127.0.0.1:8080\/\n\n    ErrorLog ${APACHE_LOG_DIR}\/tomcat_error.log\n    CustomLog ${APACHE_LOG_DIR}\/tomcat_access.log combined\n<\/VirtualHost><\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, <code>example.com<\/code> adresine gelen t\u00fcm istekleri yerel Tomcat sunucusunun 8080 portuna y\u00f6nlendirir.<\/p>\n<h4>Apache Sanal Host Yap\u0131land\u0131rmas\u0131 (HTTPS Proxy ve Let&#8217;s Encrypt)<\/h4>\n<p>Web sitenizi HTTPS \u00fczerinden yay\u0131nlamak, modern web g\u00fcvenli\u011finin temelidir. Let&#8217;s Encrypt ile \u00fccretsiz SSL\/TLS sertifikalar\u0131 alabiliriz.<\/p>\n<h5>Certbot Kurulumu ve SSL Sertifikas\u0131 Alma<\/h5>\n<pre><code class=\"language-bash\">sudo apt install certbot python3-certbot-apache -y\nsudo certbot --apache -d example.com -d www.example.com<\/code><\/pre>\n<p>Certbot, otomatik olarak Apache yap\u0131land\u0131rman\u0131z\u0131 g\u00fcncelleyecek ve SSL sertifikas\u0131n\u0131 kuracakt\u0131r.<\/p>\n<h5>SSL Yap\u0131land\u0131rmas\u0131n\u0131 G\u00fc\u00e7lendirme<\/h5>\n<p>Certbot&#8217;un olu\u015fturdu\u011fu SSL yap\u0131land\u0131rmas\u0131n\u0131 daha da g\u00fc\u00e7lendirebiliriz. <code>ssl.conf<\/code> dosyas\u0131n\u0131 d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/mods-enabled\/ssl.conf<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki sat\u0131rlar\u0131 bulun ve g\u00fcncelleyin (veya ekleyin):<\/p>\n<pre><code class=\"language-apache\">SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1\nSSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH\nSSLHonorCipherOrder on\nSSLCompression off\nSSLSessionTickets Off\nSSLUseStapling on\nSSLStaplingCache \"shmcb:logs\/stapling_cache(128K)\"<\/code><\/pre>\n<p>Bu ayarlar, daha g\u00fc\u00e7l\u00fc \u015fifreleme algoritmalar\u0131 ve protokolleri kullan\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<h5>Geli\u015fmi\u015f G\u00fcvenlik Ba\u015fl\u0131klar\u0131 Ekleme<\/h5>\n<p>HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131, taray\u0131c\u0131 tabanl\u0131 sald\u0131r\u0131lara kar\u015f\u0131 ek koruma sa\u011flar. Bu ba\u015fl\u0131klar\u0131 <code>tomcat.conf<\/code> dosyan\u0131za ekleyin:<\/p>\n<pre><code class=\"language-apache\"><VirtualHost *:443>\n    ServerName example.com\n    ServerAlias www.example.com\n\n    ProxyRequests Off\n    ProxyPreserveHost On\n\n    <Proxy *>\n        Require all granted\n    <\/Proxy>\n\n    ProxyPass \/ http:\/\/127.0.0.1:8080\/\n    ProxyPassReverse \/ http:\/\/127.0.0.1:8080\/\n\n    # SSL Ayarlar\u0131 (Certbot taraf\u0131ndan eklenir)\n    SSLEngine on\n    SSLCertificateFile \/etc\/letsencrypt\/live\/example.com\/fullchain.pem\n    SSLCertificateKeyFile \/etc\/letsencrypt\/live\/example.com\/privkey.pem\n    Include \/etc\/letsencrypt\/options-ssl-apache.conf\n\n    # G\u00fcvenlik Ba\u015fl\u0131klar\u0131\n    Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\"\n    Header always set X-Frame-Options \"DENY\"\n    Header always set X-Content-Type-Options \"nosniff\"\n    Header always set X-XSS-Protection \"1; mode=block\"\n    Header always set Referrer-Policy \"no-referrer-when-downgrade\"\n    # Content-Security-Policy ba\u015fl\u0131\u011f\u0131 uygulaman\u0131za \u00f6zel olarak yap\u0131land\u0131r\u0131lmal\u0131d\u0131r.\n    # Header always set Content-Security-Policy \"default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';\"\n\n    ErrorLog ${APACHE_LOG_DIR}\/tomcat_ssl_error.log\n    CustomLog ${APACHE_LOG_DIR}\/tomcat_ssl_access.log combined\n<\/VirtualHost><\/code><\/pre>\n<p>*   <strong>Strict-Transport-Security (HSTS):<\/strong> Taray\u0131c\u0131lar\u0131 her zaman HTTPS kullanmaya zorlar.<br \/>\n*   <strong>X-Frame-Options:<\/strong> Sitenizin iframe&#8217;lerde g\u00f6r\u00fcnt\u00fclenmesini engeller (clickjacking korumas\u0131).<br \/>\n*   <strong>X-Content-Type-Options:<\/strong> Taray\u0131c\u0131lar\u0131n MIME tiplerini tahmin etmesini engeller (MIME sniffing sald\u0131r\u0131lar\u0131na kar\u015f\u0131).<br \/>\n*   <strong>X-XSS-Protection:<\/strong> Taray\u0131c\u0131lar\u0131n XSS sald\u0131r\u0131lar\u0131na kar\u015f\u0131 yerle\u015fik korumalar\u0131n\u0131 etkinle\u015ftirir.<br \/>\n*   <strong>Referrer-Policy:<\/strong> Y\u00f6nlendiren bilgilerinin nas\u0131l g\u00f6nderilece\u011fini kontrol eder.<br \/>\n*   <strong>Content-Security-Policy (CSP):<\/strong> XSS ve veri enjeksiyonu sald\u0131r\u0131lar\u0131n\u0131 \u00f6nlemek i\u00e7in g\u00fcvenli i\u00e7erik kaynaklar\u0131n\u0131 belirler. (Bu ba\u015fl\u0131k uygulaman\u0131z\u0131n gereksinimlerine g\u00f6re dikkatlice yap\u0131land\u0131r\u0131lmal\u0131d\u0131r.)<\/p>\n<h5>HTTP&#8217;den HTTPS&#8217;ye Y\u00f6nlendirme<\/h5>\n<p>T\u00fcm HTTP isteklerini otomatik olarak HTTPS&#8217;ye y\u00f6nlendirmek i\u00e7in <code>tomcat.conf<\/code> dosyas\u0131ndaki 80 portu sanal hostunu a\u015fa\u011f\u0131daki gibi g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-apache\"><VirtualHost *:80>\n    ServerName example.com\n    ServerAlias www.example.com\n    Redirect permanent \/ https:\/\/example.com\/\n<\/VirtualHost><\/code><\/pre>\n<h5>Yap\u0131land\u0131rmay\u0131 Etkinle\u015ftirme ve Yeniden Ba\u015flatma<\/h5>\n<pre><code class=\"language-bash\">sudo a2ensite tomcat.conf\nsudo apache2ctl configtest\nsudo systemctl restart apache2<\/code><\/pre>\n<h4>UFW G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (Apache i\u00e7in)<\/h4>\n<p>Yaln\u0131zca gerekli portlara (80 ve 443) izin verin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Apache Full'\nsudo ufw delete allow 'Apache' # E\u011fer \u00f6nceden sadece 80 portuna izin verdiyseniz\nsudo ufw enable # E\u011fer ufw etkin de\u011filse\nsudo ufw status<\/code><\/pre>\n<h3>Nginx ile Tomcat&#8217;i G\u00fcvenli Hale Getirme<\/h3>\n<p>Nginx, y\u00fcksek performansl\u0131 ve hafif bir web sunucusu ve ters proxy&#8217;dir.<\/p>\n<h4>Nginx Kurulumu<\/h4>\n<pre><code class=\"language-bash\">sudo apt install nginx -y<\/code><\/pre>\n<h4>Nginx Server Block Yap\u0131land\u0131rmas\u0131 (HTTP Proxy)<\/h4>\n<p>Tomcat&#8217;i 80 portu \u00fczerinden Nginx ile eri\u015filebilir hale getirelim.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/tomcat<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin. <code>example.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131 kullan\u0131n.<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n    server_name example.com www.example.com;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8080\/;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/code><\/pre>\n<p>*   <code>proxy_pass<\/code>: \u0130stekleri Tomcat&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131 adrese y\u00f6nlendirir.<br \/>\n*   <code>proxy_set_header<\/code>: Tomcat&#8217;in istemci IP&#8217;si ve protokol\u00fc gibi ger\u00e7ek bilgileri almas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Nginx Server Block Yap\u0131land\u0131rmas\u0131 (HTTPS Proxy ve Let&#8217;s Encrypt)<\/h4>\n<p>Apache&#8217;de oldu\u011fu gibi, Nginx i\u00e7in de Let&#8217;s Encrypt ile SSL sertifikas\u0131 alaca\u011f\u0131z.<\/p>\n<h5>Certbot Kurulumu ve SSL Sertifikas\u0131 Alma<\/h5>\n<pre><code class=\"language-bash\">sudo apt install certbot python3-certbot-nginx -y\nsudo certbot --nginx -d example.com -d www.example.com<\/code><\/pre>\n<p>Certbot, Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak g\u00fcncelleyecek ve SSL sertifikas\u0131n\u0131 kuracakt\u0131r.<\/p>\n<h5>SSL Yap\u0131land\u0131rmas\u0131n\u0131 G\u00fc\u00e7lendirme<\/h5>\n<p>Certbot&#8217;un olu\u015fturdu\u011fu Nginx SSL yap\u0131land\u0131rmas\u0131n\u0131 daha da g\u00fc\u00e7lendirebiliriz. <code>sites-available\/tomcat<\/code> dosyan\u0131z\u0131 tekrar d\u00fczenleyin ve a\u015fa\u011f\u0131daki SSL ayarlar\u0131n\u0131 ekleyin\/g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    server_name example.com www.example.com;\n\n    ssl_certificate \/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\n    ssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem;\n    ssl_trusted_certificate \/etc\/letsencrypt\/live\/example.com\/chain.pem; # Nginx i\u00e7in gerekli olabilir\n    ssl_session_timeout 1d;\n    ssl_session_cache shared:SSL:10m;\n    ssl_session_tickets off;\n\n    # Diffie-Hellman parametreleri (g\u00fcvenli\u011fi art\u0131r\u0131r, \u00f6nceden olu\u015fturulmu\u015f olmal\u0131)\n    # sudo openssl dhparam -out \/etc\/nginx\/dhparam.pem 2048\n    # ssl_dhparam \/etc\/nginx\/dhparam.pem;\n\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';\n    ssl_prefer_server_ciphers on;\n\n    # OCSP Stapling\n    ssl_stapling on;\n    ssl_stapling_verify on;\n    resolver 8.8.8.8 8.8.4.4 valid=300s;\n    resolver_timeout 5s;\n\n    add_header X-Frame-Options \"DENY\";\n    add_header X-Content-Type-Options \"nosniff\";\n    add_header X-XSS-Protection \"1; mode=block\";\n    add_header Referrer-Policy \"no-referrer-when-downgrade\";\n    add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\";\n    # Content-Security-Policy ba\u015fl\u0131\u011f\u0131 uygulaman\u0131za \u00f6zel olarak yap\u0131land\u0131r\u0131lmal\u0131d\u0131r.\n    # add_header Content-Security-Policy \"default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';\";\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8080\/;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_redirect off;\n    }\n}<\/code><\/pre>\n<p>Nginx i\u00e7in Diffie-Hellman parametrelerini olu\u015fturmak isteyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo openssl dhparam -out \/etc\/nginx\/dhparam.pem 2048<\/code><\/pre>\n<p>Sonra <code>ssl_dhparam \/etc\/nginx\/dhparam.pem;<\/code> sat\u0131r\u0131n\u0131 Nginx yap\u0131land\u0131rman\u0131za ekleyin.<\/p>\n<h5>HTTP&#8217;den HTTPS&#8217;ye Y\u00f6nlendirme<\/h5>\n<p>Certbot, HTTP&#8217;den HTTPS&#8217;ye y\u00f6nlendirme i\u00e7in ayr\u0131 bir <code>server<\/code> blo\u011fu olu\u015fturacakt\u0131r. E\u011fer olu\u015fturmad\u0131ysa, a\u015fa\u011f\u0131daki gibi manuel olarak ekleyebilirsiniz:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n    server_name example.com www.example.com;\n    return 301 https:\/\/$host$request_uri;\n}<\/code><\/pre>\n<h5>Yap\u0131land\u0131rmay\u0131 Etkinle\u015ftirme ve Yeniden Ba\u015flatma<\/h5>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/tomcat \/etc\/nginx\/sites-enabled\/\nsudo nginx -t\nsudo systemctl restart nginx<\/code><\/pre>\n<h4>UFW G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (Nginx i\u00e7in)<\/h4>\n<p>Yaln\u0131zca gerekli portlara (80 ve 443) izin verin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Nginx Full'\nsudo ufw delete allow 'Nginx HTTP' # E\u011fer \u00f6nceden sadece 80 portuna izin verdiyseniz\nsudo ufw enable # E\u011fer ufw etkin de\u011filse\nsudo ufw status<\/code><\/pre>\n<h3>Yap\u0131land\u0131rma Sonras\u0131 G\u00fcvenlik Kontrolleri ve Bak\u0131m<\/h3>\n<p>G\u00fcvenlik, tek seferlik bir i\u015flem de\u011fil, s\u00fcrekli bir s\u00fcre\u00e7tir.<\/p>\n<h4>Eri\u015fim Testleri<\/h4>\n<p>*   Web taray\u0131c\u0131n\u0131zdan alan ad\u0131n\u0131z\u0131 (\u00f6rn. <code>https:\/\/example.com<\/code>) ziyaret ederek uygulaman\u0131z\u0131n HTTPS \u00fczerinden do\u011fru \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n.<br \/>\n*   Tomcat Manager ve Host Manager aray\u00fczlerine do\u011frudan 8080 portundan eri\u015fmeye \u00e7al\u0131\u015f\u0131n (<code>http:\/\/<sunucu_IP_adresi>:8080\/manager<\/code>). E\u011fer IP k\u0131s\u0131tlamas\u0131 yapt\u0131ysan\u0131z, eri\u015fimin engellendi\u011fini g\u00f6rmelisiniz.<br \/>\n*   <code>curl -I https:\/\/example.com<\/code> komutunu kullanarak HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131n do\u011fru ayarland\u0131\u011f\u0131n\u0131 kontrol edin.<br \/>\n*   SSL Labs gibi ara\u00e7larla (https:\/\/www.ssllabs.com\/ssltest\/) SSL\/TLS yap\u0131land\u0131rman\u0131z\u0131n derecesini kontrol edin.<\/p>\n<h4>Log \u0130zleme<\/h4>\n<p>Hem Tomcat hem de ters proxy (Apache\/Nginx) loglar\u0131n\u0131 d\u00fczenli olarak izleyin. Anormal istekleri, hata mesajlar\u0131n\u0131 veya yetkisiz eri\u015fim denemelerini tespit etmek i\u00e7in log analiz ara\u00e7lar\u0131 kullan\u0131n.<\/p>\n<h4>D\u00fczenli G\u00fcncellemeler<\/h4>\n<p>\u0130\u015fletim sistemi, Java, Tomcat, Apache\/Nginx ve di\u011fer t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 d\u00fczenli olarak g\u00fcncelleyin. G\u00fcvenlik yamalar\u0131, bilinen zafiyetleri kapat\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo apt update && sudo apt upgrade -y<\/code><\/pre>\n<h4>G\u00fcvenlik Taramalar\u0131 ve Denetimleri<\/h4>\n<p>Sitenizi d\u00fczenli olarak g\u00fcvenlik taray\u0131c\u0131lar\u0131 (\u00f6rn. OWASP ZAP, Nessus, OpenVAS) ile taray\u0131n. Bu ara\u00e7lar, uygulaman\u0131zdaki ve altyap\u0131n\u0131zdaki potansiyel zafiyetleri ortaya \u00e7\u0131karabilir.<\/p>\n<h4>Yedeklemeler<\/h4>\n<p>Tomcat uygulamalar\u0131n\u0131z\u0131n, yap\u0131land\u0131rma dosyalar\u0131n\u0131z\u0131n ve veritabanlar\u0131n\u0131z\u0131n d\u00fczenli yedeklerini al\u0131n. Bir g\u00fcvenlik ihlali durumunda h\u0131zl\u0131 bir \u015fekilde kurtarma yapabilmek i\u00e7in bu kritik \u00f6neme sahiptir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Tomcat 10&#8217;u Apache veya Nginx ile Ubuntu 20.04 \u00fczerinde g\u00fcvenli hale getirmek, \u00e7ok katmanl\u0131 bir yakla\u015f\u0131m gerektirir. Bu makalede, Tomcat&#8217;in kendi i\u00e7 g\u00fcvenlik ayarlar\u0131ndan ba\u015flayarak, Apache veya Nginx&#8217;i g\u00fc\u00e7l\u00fc bir ters proxy olarak nas\u0131l yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131, SSL\/TLS \u015fifrelemesini nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131 ve geli\u015fmi\u015f HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131 nas\u0131l ekleyece\u011fimizi detayl\u0131 bir \u015fekilde inceledik.<\/p>\n<p>Bir ters proxy kullanmak, Tomcat sunucunuzu do\u011frudan internete maruz kalmaktan koruyarak, SSL\/TLS sonland\u0131rma, y\u00fck dengeleme ve statik i\u00e7erik sunumu gibi \u00f6nemli avantajlar sa\u011flar. Ayr\u0131ca, g\u00fcvenlik ba\u015fl\u0131klar\u0131 ve d\u00fczenli g\u00fcncellemelerle birlikte, web uygulaman\u0131z\u0131n genel g\u00fcvenlik duru\u015funu \u00f6nemli \u00f6l\u00e7\u00fcde g\u00fc\u00e7lendirir. Unutmay\u0131n ki g\u00fcvenlik, s\u00fcrekli dikkat ve bak\u0131m gerektiren dinamik bir s\u00fcre\u00e7tir. Bu ad\u0131mlar\u0131 uygulayarak ve d\u00fczenli olarak g\u00fcvenlik pratiklerinizi g\u00f6zden ge\u00e7irerek, Tomcat tabanl\u0131 uygulamalar\u0131n\u0131z\u0131 k\u00f6t\u00fc niyetli sald\u0131r\u0131lara kar\u015f\u0131 daha diren\u00e7li hale getirebilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Tomcat 10&#8217;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme\nGiri\u015f: Web Uygulamalar\u0131n\u0131n Kalbi Tomcat ve G\u00fcvenli\u011fin \u00d6nemi\nApac","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-34839","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tomcat 10&#039;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tomcat 10&#039;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme\" \/>\n<meta property=\"og:description\" content=\"Tomcat 10&#039;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme Giri\u015f: Web Uygulamalar\u0131n\u0131n Kalbi Tomcat ve G\u00fcvenli\u011fin \u00d6nemi Apac\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-22T14:40:50+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Tomcat 10&#8217;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme\",\"datePublished\":\"2025-11-22T14:40:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/\"},\"wordCount\":2346,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/\",\"name\":\"Tomcat 10'u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-22T14:40:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tomcat 10&#8217;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tomcat 10'u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/","og_locale":"tr_TR","og_type":"article","og_title":"Tomcat 10'u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme","og_description":"Tomcat 10'u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme Giri\u015f: Web Uygulamalar\u0131n\u0131n Kalbi Tomcat ve G\u00fcvenli\u011fin \u00d6nemi Apac","og_url":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-22T14:40:50+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Tomcat 10&#8217;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme","datePublished":"2025-11-22T14:40:50+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/"},"wordCount":2346,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/","url":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/","name":"Tomcat 10'u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-22T14:40:50+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/tomcat-10u-apache-veya-nginx-ile-ubuntu-20-04-uzerinde-guvenli-hale-getirme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tomcat 10&#8217;u Apache veya Nginx ile Ubuntu 20.04 \u00dczerinde G\u00fcvenli Hale Getirme"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34839","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34839"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34839\/revisions"}],"predecessor-version":[{"id":34840,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34839\/revisions\/34840"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34839"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}