为什么要一起运行Nginx和Apache
nginx和apache都是强大而有效的服务器。 Apache目前是网站的第一个服务器,自从2006年公开发布以来,nginx已经风靡全球,现在是活跃网站的第二个服务器。 每个服务器的流行度的原因是清楚的:apache的力量和nginx的速度是众所周知的。 但是,这两个服务器都有缺点 - apache在服务器内存是困难的,而nginx(伟大的静态文件)需要php-fpm或类似模块的动态内容的帮助。
但是,可以将两个Web服务器组合起来效果非常好,nginx作为静态Web服务器前端,而Apache处理后端。
建立
要执行本教程中的步骤,您需要在虚拟专用服务器上具有sudo权限。
要创建使用sudo权限的用户,经过第三步和第四步
安装nginx
首先,我们需要安装和配置nginx,这将服务于我们网站的前端。
让我们从apt-get下载它:
sudo apt-get install nginx
下载后,您可以继续配置虚拟主机以在前端运行。
我们需要在配置中进行一些更改。
配置nginx
打开nginx配置。
sudo nano /etc/nginx/sites-available/example
以下配置将设置为使用nginx作为前端服务器。 它与默认设置非常相似,详细信息在配置下。
server { listen 80; root /var/www/; index index.php index.html index.htm; server_name example.com; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~ /\.ht { deny all; } }
在配置中实现了以下更改:
- 根目录设置为正确的Web目录
- index.php已添加到索引行
- try_files尝试提供访问者请求的任何页面。 如果nginx不能,则文件被传递到代理
- proxy_pass允许nginx代理服务器的地址
- 最后,“location〜/\.ht {”位置块拒绝访问.htaccess文件,如果Apache的文档根与nginx的一致
此配置设置一个系统,其中所有具有php结尾的扩展都重新路由到将在端口8080上运行的apache后端。
激活虚拟主机。
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example
此外,删除默认的nginx服务器块。
sudo rm /etc/nginx/sites-enabled/default
下一步是安装和配置apache。
安装Apache
使用nginx照顾,是时候安装我们的后端,apache。
sudo apt-get install apache2
由于nginx仍然没有打开,Apache将开始在端口80上运行。
配置Apache
我们需要配置apache来接管后端,我们告诉nginx将在端口8080上运行。打开apache ports文件,在正确的端口上开始设置apache:
sudo nano /etc/apache2/ports.conf
查找并更改以下行以使apache在端口8080上运行,只能从localhost访问:
NameVirtualHost 127.0.0.1:8080 Listen 127.0.0.1:8080
保存并退出。
随后,打开一个新的虚拟主机文件,从默认的apache文件复制布局:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example
sudo nano /etc/apache2/sites-available/example
在这里需要解决的主要问题是,虚拟主机需要再次运行在端口8080(而不是默认的80给nginx)。
该行应该如下所示:
<VirtualHost 127.0.0.1:8080>
确保您的文档根是正确的。 保存并退出文件并激活该虚拟主机:
sudo a2ensite example
在我们开始测试任何东西之前,我们需要为apache配备php。 立即安装:
sudo apt-get install php5
重新启动两个服务器以使更改生效:
sudo service apache2 restart
sudo service nginx restart
完事
我们设置了VPS与nginx运行在我们的网站的前端和apache处理php在后端。 加载我们的域将带我们到我们网站的默认页面。
我们可以通过运行通用的php脚本来检查信息是否路由到apache正在工作。
继续并创建php.info文件:
sudo nano /var/www/info.php
将以下行粘贴到该文件中:
<? phpinfo( ); ?>
保存并退出。
访问您的域/ info.php应该显示您的php信息屏幕,你会看到这是由apache处理。 (截图在这里 )
最后,您可以通过键入此命令查看哪些端口是打开的,哪些应用程序在每个端口上。
sudo netstat -plunt
查看更多
将nginx和Apache一起配置可以大大提高服务器,这只是一个简单的概述。 如果您对配置两个任何具体问题一起,随时在我们张贴您的问题Q&A论坛 ,我们很乐意回答他们。