Linux中國

如何在 FreeBSD 10.2 上安裝 Nginx 作為 Apache 的反向代理

前提條件

  • FreeBSD 10.2
  • Root 許可權

步驟 1 - 更新系統

使用 SSH 認證方式登錄到你的 FreeBSD 伺服器,使用下面命令來更新你的系統:

freebsd-update fetch
freebsd-update install

步驟 2 - 安裝 Apache

Apache 是開源的、使用範圍最廣的 web 伺服器。在 FreeBSD 里默認沒有安裝 Apache, 但是我們可以直接通過 /usr/ports/www/apache24 下的 ports 或軟體包來安裝,也可以直接使用 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埠上, 並讓 PHP 與 Apache 一同工作。 要想配置Apache,我們可以編輯「httpd.conf」這個配置文件, 對於 PHP 我們只需要複製 「/usr/local/etc/」目錄下的 PHP 配置文件 php.ini。

進入到「/usr/local/etc/」目錄,並且複製 php.ini-production 文件到 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 127.0.0.1:8080

在第277行,添加 DirectoryIndex 文件,Apache 將用它來服務對目錄的請求:

DirectoryIndex index.php index.html

在第287行下,配置 Apache ,添加腳本支持:

<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

如果全部完畢,在「/usr/local/www/apache24/data」目錄下創建一個 phpinfo 文件來驗證 PHP 在 Apache 下順利運行:

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

現在就可以訪問 freebsd 的伺服器 IP : 192.168.1.123:8080/info.php 。

Apache and PHP on Port 8080

Apache 及 PHP 運行在 8080 埠。

步驟 5 - 安裝 Nginx

Nginx 可以以較低內存佔用提供高性能的 Web 伺服器和反向代理伺服器。在這個步驟里,我們將會使用 Nginx 作為Apache 的反向代理,因此讓我們用 pkg 命令來安裝它吧:

pkg install nginx

步驟 6 - 配置 Nginx

一旦 Nginx 安裝完畢,在「nginx.conf」文件里,我們需要做一個新的配置文件來替換掉原來的 nginx 配置文件。切換到「/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  &apos;$remote_addr - $remote_user [$time_local] "$request" &apos;
&apos;$status $body_bytes_sent "$http_referer" &apos;
&apos;"$http_user_agent" "$http_x_forwarded_for"&apos;;
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;

保存並退出。

最後一步,為 nginx 的高速緩存創建一個「/var/nginx/cache」的新目錄:

mkdir -p /var/nginx/cache

步驟 7 - 配置 Nginx 的虛擬主機

在這個步驟裡面,我們需要創建一個新的虛擬主機域「saitama.me」,其文檔根目錄為「/usr/local/www/saitama.me」,日誌文件放在「/var/log/nginx」目錄下。

我們必須做的第一件事情就是創建新的目錄來存放虛擬主機配置文件,我們創建的新目錄名為「vhost」。創建它:

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

創建好 vhost 目錄,然後我們就進入這個目錄並創建一個新的虛擬主機文件。這裡我取名為「saitama.conf」:

cd vhost/
nano -c saitama.conf

粘貼如下虛擬主機的配置:

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;
}

}

保存並退出。

下一步,為 nginx 和虛擬主機創建一個新的日誌目錄「/var/log/」:

mkdir -p /var/log/nginx/

如果一切順利,在文件的根目錄下創建目錄 saitama.me 用作文檔根:

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

步驟 8 - 測試

在這個步驟裡面,我們只是測試我們的 nginx 和虛擬主機的配置。

用如下命令測試 nginx 的配置:

nginx -t

如果一切都沒有問題,用 sysrc 命令添加 nginx 為開機啟動項,並且啟動 nginx 和重啟 apache:

sysrc nginx_enable=yes
service nginx start
service apache24 restart

一切完畢後,在 saitama.me 目錄下,添加一個新的 phpinfo 文件來驗證 php 的正常運行:

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

然後訪問這個域名: www.saitama.me/info.php

Virtualhost Configured saitamame

Nginx 作為 Apache 的反向代理運行了,PHP 也同樣工作了。

這是另一個結果:

測試無緩存的 .html 文件。

curl -I www.saitama.me

html with no-cache

測試有三十天緩存的 .css 文件。

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

css file 30day cache

測試緩存的 .php 文件:

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

PHP file cached

全部搞定。

總結

Nginx 是最受歡迎的 HTTP 和反向代理伺服器,擁有豐富的功能、高性能、低內存/RAM 佔用。Nginx 也用於緩存, 我們可以在網路上緩存靜態文件使得網頁加速,並且緩存用戶請求的 php 文件。 Nginx 容易配置和使用,可以將它用作 HTTP 伺服器或者 apache 的反向代理。

via: http://linoxide.com/linux-how-to/install-nginx-reverse-proxy-apache-freebsd-10-2/

作者:Arul 譯者:KnightJoker 校對:Carolinewxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國