我打算将我所有的静态内容移动到一个CDN,所以在我的服务器上我只剩下dynamic内容。 我现在把Nginx设置为Apache的反向代理。 Nginx直接发送的静态请求,而不必去Apache。
在这种情况下,Nginx处理了很大一部分请求,我可以清楚地看到Nginx的必要性。
现在我把所有的静态内容移动到另一个域,是否仍然需要在Apache之前有nginx。 因为现在所有的请求都是默认的dynamic请求,都转到Apache。
让Nginx和Apache只运行dynamic内容还有其他好处。
我的dynamic内容是PHP / MySQL
编辑:
要清楚的是: 我现在有Nginx作为反向代理。 它提供静态和dynamic内容。 但我正在将我的静态文件移动到CDN。 那么我还需要在我的域名上使用Nginx吗?
不,你不需要nginx了。
是的,你绝对需要在Apache之前的nginx。 Apache每个连接使用1个线程或进程。 每个线程占用内存。 如果您有几百人访问您的网站,并且启用了Keepalive,则这些浏览器中的每一个都会使apache进程或线程忙于占用服务器上的内存。
你可以通过禁用你的apache服务器上的keepalive来解决这个问题,但是这会降低你网站的性能,因为浏览器不能重用连接。
所以相反,你使用nginx作为一个反向代理启用keepalive。 它可以维持数千个连接,占用很少的内存(大约8 megs)。 由于nginx对于你的apache服务器是本地的,每个请求只占用一个apache子或线程几微秒。 这意味着您只需要一小撮的apache进程即可为成千上万的用户提供服务。
另外nginx的配置比apache灵活得多,通过在前端使用它可以提供很大的灵活性。
我为一个网站所做的是:
这不需要设置两个域:全部在同一个域上。
基本上,我所做的是:
下面是我的nginx的配置文件的样子:
server { listen 80; server_name MY_DOMAIN_NAME; access_log /var/log/nginx/MY_DOMAIN_NAME.access.log; gzip on; gzip_comp_level 2; gzip_proxied any; gzip_types text/plain text/html text/css text/xml application/xml application/xml+rss application/xml+atom text/javascript application/x-javascript application/javascript; location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ { root /home/www/MY_DOMAIN_NAME; #access_log off; gzip off; expires 1d; } location ~* ^.+\.(css|js)$ { root /home/www/MY_DOMAIN_NAME; #access_log off; expires 1d; } location ~* ^.+\.(pdf|gz|bz2|exe|rar|zip|7z)$ { root /home/www/MY_DOMAIN_NAME; gzip off; } location / { proxy_pass http://MY_DOMAIN_NAME:8080; proxy_redirect off; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; proxy_max_temp_file_size 0; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
现在,为什么做这样的事情?
那么,nginx应该是:
所以,我认为它可以帮助一个网站有点流量,以降低对Apache的负载。
您也可以使用nginx从Apache实例中卸载SSL处理。
例如,我们有一个配置了nginx-> haproxy-> apache服务器池的堆栈。 nginx和haproxy一起生活在心跳群集上,并将请求提交到后端的apache框中。 我们在nginx前端安装所有的SSL证书。
在使用Apache 1.3的情况下,前面的nginx是最好的解决方案:
nginx可以很容易地服务于成千上万的连接,但Apache不能