# Web server काय करतो? Nginx आणि Apache

Source: https://ravindrabagale.com/mr/cyber/part-03/ch07-apache-and-nginx-install-and-understand/7-1-what-a-web-server-does-nginx-vs-apache.html
Language: mr (Marathi with English technical terms)

Web server हा HTTP/HTTPS requests घेणारा program आहे. साधारण port 80/443 वर request येते. Host आणि URL पाहून योग्य file देतो किंवा application कडून response आणतो. Nginx आणि Apache दोन्ही वापरले जातात; choice application आणि configuration वर ठरते.

 | Feature
 | Nginx
 | Apache (httpd / apache2)

 | Architecture
 | Event-driven/asynchronous; मोजके workers अनेक connections हाताळतात
 | MPM नुसार process/thread/event behavior (prefork, worker, event)

 | Static content
 | Static content साठी कार्यक्षम; workload/config वर परिणाम अवलंबून
 | कार्यक्षमता आणि memory वापर MPM/workload/config वर अवलंबून

 | Dynamic content (PHP)
 | बाहेरच्या PHP-FPM द्वारे (FastCGI)
 | mod_php किंवा PHP-FPM द्वारे

 | Configuration
 | Central config files; server {} blocks
 | Central config + गरजेनुसार directory ची .htaccess

 | .htaccess support
 | नाही; rules central config मध्ये द्यावे लागतात
 | हो; configured असल्यास WordPress/shared hosting मध्ये उपयोगी

 | Reverse proxy / load balancer
 | Built-in proxy/load-balancing सुविधा
 | mod_proxy, mod_proxy_balancer modules द्वारे

 | Modules
 | Compiled किंवा dynamic modules
 | अनेक dynamically loadable modules

 | Virtual hosts
 | server { server_​name ... }
 | <VirtualHost *:​80> ServerName ... </​VirtualHost>

 | नेहमीचा उपयोग
 | Node/Python reverse proxy, static sites, जास्त traffic
 | LAMP apps, WordPress, legacy apps, shared hosting

Nginx चं event-driven design कमी workers मधून अनेक connections हाताळण्यासाठी उपयोगी. Apache मध्ये prefork, worker, event अशी MPM models आहेत. त्यामुळे “Apache नेहमी एक process per connection” किंवा “Nginx नेहमीच fast” असे सरसकट निष्कर्ष काढू नका; workload, modules आणि configuration महत्त्वाचे असतात.

PHP साठी Nginx बाहेरचा PHP-FPM/FastCGI वापरतो. Apache मध्ये mod_php किंवा PHP-FPM वापरता येतो. Nginx मध्ये central config/server blocks; Apache मध्ये central config सोबत परवानगी दिल्यास per-directory .htaccess वापरता येतो. Nginx .htaccess वाचत नाही.

कुठे कोणता निवडाल?

Static sites आणि Node/Python च्या पुढे reverse proxy म्हणून Nginx सोयीचा. .htaccess वर अवलंबून असलेल्या PHP/WordPress setup साठी Apache सोपा पडू शकतो. दोन्ही reverse proxy/load balancing करू शकतात; Apache मध्ये mod_proxy/mod_proxy_balancer संबंधित modules असतात.

एका IP/address family वरचा तोच port दोन्ही services स्वतंत्रपणे bind करू शकत नाहीत. या lab मध्ये server बदलताना दुसरी service आधी थांबवा किंवा वेगळा listen endpoint ठरवा.

Security मध्ये महत्त्व

Version banner उदा. Server: nginx/1.24.0, directory listing, test pages आणि उघडे backups अनावश्यक माहिती देऊ शकतात. पुढच्या Nikto lab मध्ये असे checks पाहू. Version लपवणं updates आणि secure configuration चा पर्याय नाही.

Practice

Nginx आणि Apache मधले तीन फरक लिहा. प्रत्येकी एक असा use case द्या जिथे तुम्ही तो निवडाल.

रवींद्र बागले यांची tip

दुसरा web server start होताना “Address already in use” आला तर आधी ss ने कोणता process तो IP:port वापरतोय ते पाहा. गरजेनुसार lab मधली दुसरी service थांबवा; उदा. sudo service httpd stop.
