如何在Ubuntu 15.10上安装Nginx作为Apache的反向代理

如何在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

结果应该类似于上面的截图。

Apache on port 8080

第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缓存的配置。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏