如何将nginx安装为freebsd 10.2上apache的反向代理

时间:2020-03-05 15:28:03  来源:igfitidea点击:

nginx是免费的,开源的http服务器和反向代理,以及用于IMAP/POP3的邮件代理服务器。
nginx是具有丰富功能的高性能Web服务器,配置简单,内存使用率低。
最初由Igor Sysoev于2002年编写,直到现在一家大型技术,包括Netflix,GitHub,CloudFlare,WordPress.com等。

在本教程中,我们将"安装和配置Nginx Web服务器作为FreeBSD 10.2上Apache的反向代理。
Apache将在端口8080上使用PHP运行,然后我们需要在端口80上配置nginx运行,以从用户/访问者接收请求。
如果从端口80上的浏览器对网页的用户请求,则Nginx将将请求通过在端口8080上运行的Apache Web服务器和PHP。

第1步 - 更新系统

使用以下命令使用SSH凭证和更新系统登录FreeBSD服务器:

freebsd-update fetch
freebsd-update install

第2步 - 安装apache

Pache是开源HTTP服务器和最广泛使用的Web服务器。
Apache未在FreeBSD上安装默认情况下,但我们可以从"/usr/ports/www/apache24"上的端口或者包装安装,或者使用pkg命令从FreeBSD存储库安装。
在本教程中,我们将使用pkg命令从FreeBSD存储库安装:

pkg install apache24

第3步 - 安装PHP

安装Apache后,随后安装PHP是否由用户处理PHP文件请求。
我们将使用pkg命令安装php:

pkg install php56 mod_php56 php56-mysql php56-mysqli

第4步 - 配置Apache和PHP

一旦安装了所有内容,我们将配置Apache以在端口8080上运行,以及使用Apache工作。
要配置Apache,我们可以编辑配置文件"httpd.conf",以及PHP,我们只需要在"/usr/local/etc /"目录上复制PHP配置文件PHP.ini。

转到"/usr/local/etc /"目录并将php.ini-production file复制到php.ini:

cd /usr/local/etc/
cp php.ini-production php.ini

接下来,通过在Apache目录上编辑文件"httpd.conf"来配置Apache:

cd /usr/local/etc/apache24
nano -c httpd.conf

第52行的端口配置:

Listen 8080

第219行中的ServerName配置:

ServerName 127.0.0.1:8080

如果在第277行请求的目录,则添加Apache的DirectoryIndex文件将为其提供服务:

DirectoryIndex index.php index.html

配置Apache以通过在第287行下添加下面的脚本来使用PHP:

<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>

保存并退出。

现在,使用sysrc命令添加apache以启动时间开始:

sysrc apache24_enable=yes

使用以下命令测试Apache配置:

apachectl configtest

如果没有错误,则启动Apache:

service apache24 start

如果完成,请验证PHP是否通过在"/usr/local/www/apache24/data"目录中使用phpinfo文件运行很好

cd /usr/local/www/apache24/data
echo "<?php phpinfo(); ?>" > info.php

现在访问FreeBSD服务器IP:192.168.1.123:8080/info.php。

Apache正在使用端口8080上的PHP。

第5步 - 安装nginx

Nginx高性能Web服务器和具有低内存消耗的反向代理。
在此步骤中,我们将使用nginx作为apache的反向代理,因此让我们使用pkg命令安装它:

pkg install nginx

步骤6 - 配置nginx

安装Nginx后,必须通过替换NGINX文件"nginx.conf"来配置它。
将目录更改为"/usr/local/etc/nginx /"和备份默认nginx.conf:

cd /usr/local/etc/nginx/
mv nginx.conf nginx.conf.oroginal

现在创建新的nginx配置文件:

nano -c nginx.conf

和粘贴配置如下:

user  www;
worker_processes  1;
error_log  /var/log/nginx/error.log;
events {
worker_connections  1024;
}
http {
include       mime.types;
default_type  application/octet-stream;
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log;
sendfile        on;
keepalive_timeout  65;
# Nginx cache configuration
proxy_cache_path    /var/nginx/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m;
proxy_temp_path     /var/nginx/cache/tmp;
proxy_cache_key     "$scheme$host$request_uri";
gzip  on;
server {
#listen       80;
server_name  _;
location /nginx_status {
stub_status on;
access_log off;
}
# redirect server error pages to the static page /50x.html
#error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /usr/local/www/nginx-dist;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:8080
#location ~ \.php${
proxy_pass   http://127.0.0.1:8080;
include /usr/local/etc/nginx/proxy.conf;
}
}
include /usr/local/etc/nginx/vhost/*;
}

保存并退出。

接下来,在nginx目录上创建名为proxy.conf的新文件:

cd /usr/local/etc/nginx/
nano -c proxy.conf

粘贴配置如下:

proxy_buffering         on;
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;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           100 8k;
add_header              X-Cache $upstream_cache_status;

保存并退出。

最后,在"/var/nginx/cache"上为nginx缓存创建新目录:

mkdir -p /var/nginx/cache

第7步 - 配置nginx virtualhost

在此步骤中,我们将为域"saitama.me"创建新的Virtualhost,其中文档root上"/usr/local/www/saitama.me"和"/var/log/nginx"目录上的日志文件。

我们必须做的第一件事是创建新目录来存储Virtualhost文件,我们在这里使用名为"vhost"的新目录。
让我们创建它:

cd /usr/local/etc/nginx/
mkdir vhost

vhost目录已创建,现在转到目录并创建新文件VirtualHost。
我在这里将创建新文件"saitama.conf":

cd vhost/
nano -c saitama.conf

粘贴下面的VirtualHost配置:

server {
# Replace with your freebsd IP
listen 192.168.1.123:80;
# Document Root
root /usr/local/www/saitama.me;
index index.php index.html index.htm;
# Domain
server_name www.saitama.me saitama.me;
# Error and Access log file
error_log  /var/log/nginx/saitama-error.log;
access_log /var/log/nginx/saitama-access.log main;
# Reverse Proxy Configuration
location ~ \.php${
proxy_pass http://127.0.0.1:8080;
include /usr/local/etc/nginx/proxy.conf;
# Cache configuration
proxy_cache my-cache;
proxy_cache_valid 10s;
proxy_no_cache $cookie_PHPSESSID;
proxy_cache_bypass $cookie_PHPSESSID;
proxy_cache_key "$scheme$host$request_uri";
}
# Disable Cache for the file type html, json
location ~* .(?:manifest|appcache|html?|xml|json)${
expires -1;
}
# 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 my-cache;
access_log off;
}
}

保存并退出。

接下来,在"/var/log /"上为nginx和virtualhost创建新的日志目录:

mkdir -p /var/log/nginx/

如果所有完成,让我们为埼玉的文档root创建一个目录:

cd /usr/local/www/
mkdir saitama.me

第8步 - 测试

此步骤刚刚测试我们的nginx配置并测试Nginx VirtualHost。

使用以下命令测试nginx配置:

nginx -t

如果没有问题,请使用sysrc命令添加nginx以启动时间,然后启动它并重新启动Apache:

sysrc nginx_enable=yes
service nginx start
service apache24 restart

所有完成,现在验证PHP正在通过在Saitama.Me目录上添加新文件phpinfo工作:

cd /usr/local/www/saitama.me
echo "<?php phpinfo(); ?>" > info.php

访问域名:www.saitama.me/info.php。

Nginx作为Apache的反向代理工作,并且PHP也在运行。

这是另一种结果:

使用无缓存的测试.html文件。

curl -I www.saitama.me

使用30天缓存测试.css文件。

curl -I www.saitama.me/test.css

使用缓存测试.php文件:

curl -I www.saitama.me/info.php