如何在Ubuntu 15.10上安装Nginx作为Apache的反向代理
Nginx或“ engine-x ”是2002年由Igor Sysoev创建的具有低内存使用率的高性能Web服务器.Nginx不仅仅是一个Web服务器,它可以用作许多协议的反向代理,如HTTP,HTTPS, POP3,SMTP和IMAP以及负载平衡器和HTTP缓存。
Apache是由Apache Software Foundation开源社区维护的最流行的Web服务器软件。 有许多可用于apache的附加模块,如WebDav支持或Web应用程序防火墙,如mod_security,它支持许多网络编程语言,如Perl,Python,PHP,通过本机模块或cgi,fcgi和FPM界面。
在本教程中,我将在Ubuntu 15.10中安装和配置Nginx作为Apache Web服务器的缓存反向代理,Nginx用作前端,Apache作为后端。 Nginx将在端口80上运行以响应来自用户/浏览器的请求,然后该请求将转发到端口8080上运行的apache服务器。
第1步 - 安装Apache和PHP
使用SSH登录到您的ubuntu服务器,并通过运行以下方式成为root用户:
sudo su
然后用apt-get命令安装apache:
apt-get install apache2
一旦安装apache,我们必须为本教程安装PHP作为apache模块:
apt-get install php5 php5-mysql libapache2-mod-php5
第2步 - 配置Apache和PHP
默认情况下,apache监听端口80.我们必须配置apache以在8080端口运行我们的代理设置,因为以后的nginx将使用端口80。
如果要更改apache Web服务器的端口,必须编辑apache配置文件“/etc/apache2/ports.conf”
,然后在“/ etc / apache2 / sites-available / “
目录。
首先通过使用vim编辑器编辑文件“ports.conf”
,将apache的端口更改为8080:
vim /etc/apache2/ports.conf
在第5行,将端口80更改为8080。
Listen 8080
保存并退出。
现在转到virtualhost目录并编辑文件“000-default.conf”
:
cd sites-available/
vim 000-default.conf
确保您的配置与以下相同:
<VirtualHost *:8080> ServerName www.reverse.com ServerAlias reverse.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
保存并退出。
接下来,测试配置并重新启动apache:
apachectl configtest
systemctl restart apache2
我们验证apache和php是否正常工作。 在目录“/ var / www / html /”中
创建名为“info.php”
的新文件。
cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php
访问您的网站www.reverse.com:8080/info.php 。
结果应该类似于上面的截图。
第3步 - 安装Nginx
使用以下apt-get命令安装Nginx:
apt-get install nginx
第4步 - 配置Nginx
安装Nginx后,配置Nginx作为端口8080上运行的apache Web服务器的反向代理。
转到nginx配置目录并编辑文件“nginx.conf”
:
cd /etc/nginx/
vim nginx.conf
通过取消注释gzip行,启用Nginx的Gzip压缩:
# Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
最重要的是:
gzip :转gzip压缩。
gzip_types :要转换压缩的MIME类型的列表。
gzip_proxied any :对代理请求启用压缩。
在gzip设置下,添加这些代理缓存设置:
# Proxy Cache Settings proxy_cache_path /var/cache levels=1:2 keys_zone=reverse_cache:60m inactive=90m max_size=1000m;
代理缓存的目录是/ var / cache。
level是一个告诉Nginx如何将缓存保存在文件系统中的指令。
key_zone只是缓存区域的名称,您可以自由选择,但不要在名称中添加特殊字符或空格。 我将在这里使用名称“ reverse_cache ”。
保存并退出。
现在我们将在目录“/ etc / nginx / sites-available”中
配置一个virtualhost。
在本教程中,我将创建一个名为“reverse.conf”
的新的virtualhost配置文件。 刚刚到目录,并用vim创建新的文件:
cd /etc/nginx/sites-available
vim reverse.conf
粘贴以下配置:
server { listen 80; # Site Directory same in the apache virtualhost configuration root /var/www/html; index index.php index.html index.htm; # Domain server_name www.reverse.com reverse.com; location / { try_files $uri $uri/ /index.php; } # Reverse Proxy and Proxy Cache Configuration 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; # Cache configuration proxy_cache reverse_cache; proxy_cache_valid 3s; proxy_no_cache $cookie_PHPSESSID; proxy_cache_bypass $cookie_PHPSESSID; proxy_cache_key "$scheme$host$request_uri"; add_header X-Cache $upstream_cache_status; } # Enable Cache the file 30 days location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ { proxy_cache_valid 200 120m; expires 30d; proxy_cache reverse_cache; access_log off; } # Disable Cache for the file type html, json location ~* .(?:manifest|appcache|html?|xml|json)$ { expires -1; } location ~ /\.ht { deny all; } }
保存并退出。
然后激活新的virtualhost配置:
ln -s /etc/nginx/sites-available/reverse.conf /etc/nginx/sites-enabled/
最后我们将测试nginx配置并重新启动nginx:
nginx -t
systemctl restart nginx
Nginx现在配置为反向代理。 你可以用Curl测试:
curl -I www.reverse.com
缓存控制:no-cache表示index.html,所有以.html结尾的文件都不会缓存。
另一个测试:
curl -I www.reverse.com/info.php
X-Cache:HIT表示Nginx缓存正在提供该页面。
第5步 - 配置日志记录
在此步骤中,我将配置apache来记录访问者的真实ip,而不是本地IP。
请安装apache模块“libapache2-mod-rpaf”
并编辑模块配置文件:
sudo apt-get install libapache2-mod-rpaf
cd /etc/apache2/mods-available/
vim rpaf.conf
将服务器IP添加到第10行。 我的服务器有IP: 192.168.1.108。
RPAFproxy_ips 127.0.0.1 192.168.1.108 ::1
保存并退出。
现在重新启动apache:
systemctl restart apache2
通过使用tail命令查看apache访问日志来测试rpaf:
tail -f /var/log/apache2/access.log
就这样。
Nginx作为反向代理安装在Apache Web服务器的前面。 如果访问者请求一个php文件,请求将被传递到8080端口的apache,您可以在apache日志文件中看到真实的ip访问者。
结论
Nginx是快速和流行的Web内存使用率低的Web服务器,可以作为HTTP和HTTPS协议的Web服务器和反向代理。 apache的Nginx反向代理是一个使用Nginx作为前端的设置,apache作为后端。 Nginx处理来自浏览器的传入请求,并将其传递给apache后端。 在本教程中,我们为nginx设置了缓存PHP文件请求和映像的http缓存的配置。