如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理

如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理

Nginx 是一款自由开源的 HTTP 和反向代理服务器,也可以用作 POP3/IMAP 的邮件代理服务器。Nginx 是一款高性能的 web 服务器,其特点是功能丰富,结构简单以及内存占用低。 第一个版本由 Igor Sysoev 发布于2002年,到现在有很多大型科技公司在使用,包括 Netflix、 Github、 Cloudflare、 WordPress.com 等等。

在这篇教程里我们会“在 freebsd 10.2 系统上,安装和配置 Nginx 网络服务器作为 Apache 的反向代理”。 Apache 将在8080端口上运行 PHP ,而我们会配置 Nginx 运行在80端口以接收用户/访问者的请求。如果80端口接收到用户浏览器的网页请求,那么 Nginx 会将该请求传递给运行在8080端口上的 Apache 网络服务器和 PHP。

前提条件

  • FreeBSD 10.2
  • Root 权限

步骤 1 - 更新系统

使用 SSH 认证方式登录到你的 FreeBSD 服务器,使用下面命令来更新你的系统:


  1. freebsd-update fetch
  2. freebsd-update install

步骤 2 - 安装 Apache

Apache 是开源的、使用范围最广的 web 服务器。在 FreeBSD 里默认没有安装 Apache, 但是我们可以直接通过 /usr/ports/www/apache24 下的 ports 或软件包来安装,也可以直接使用 pkg 命令从 FreeBSD 软件库中安装。在本教程中,我们将使用 pkg 命令从 FreeBSD 软件库中安装:


  1. pkg install apache24

步骤 3 - 安装 PHP

一旦成功安装 Apache,接着将会安装 PHP ,它来负责处理用户对 PHP 文件的请求。我们将会用到如下的 pkg 命令来安装 PHP:


  1. 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 :


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

下一步,在 Apache 目录下通过编辑“httpd.conf”文件来配置 Apache:


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

端口配置在第52行 :


  1. Listen 8080

服务器名称配置在第219行:


  1. ServerName 127.0.0.1:8080

在第277行,添加 DirectoryIndex 文件,Apache 将用它来服务对目录的请求:


  1. DirectoryIndex index.php index.html

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


  1. <FilesMatch "\.php$">
  2. SetHandler application/x-httpd-php
  3. </FilesMatch>
  4. <FilesMatch "\.phps$">
  5. SetHandler application/x-httpd-php-source
  6. </FilesMatch>

保存并退出。

现在用 sysrc 命令,来添加 Apache 为开机启动项目:


  1. sysrc apache24_enable=yes

然后用下面的命令测试 Apache 的配置:


  1. apachectl configtest

如果到这里都没有问题的话,那么就启动 Apache 吧:


  1. service apache24 start

如果全部完毕,在“/usr/local/www/apache24/data”目录下创建一个 phpinfo 文件来验证 PHP 在 Apache 下顺利运行:


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

现在就可以访问 freebsd 的服务器 IP : 192.168.1.123:8080/info.php 。

Apache 及 PHP 运行在 8080 端口。

步骤 5 - 安装 Nginx

Nginx 可以以较低内存占用提供高性能的 Web 服务器和反向代理服务器。在这个步骤里,我们将会使用 Nginx 作为Apache 的反向代理,因此让我们用 pkg 命令来安装它吧:


  1. pkg install nginx

步骤 6 - 配置 Nginx

一旦 Nginx 安装完毕,在“nginx.conf”文件里,我们需要做一个新的配置文件来替换掉原来的 nginx 配置文件。切换到“/usr/local/etc/nginx/”目录下,并且备份默认 nginx.conf 文件:


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

现在就可以创建一个新的 nginx 配置文件了:


  1. nano -c nginx.conf

然后粘贴下面的配置:


  1. user www;
  2. worker_processes 1;
  3. error_log /var/log/nginx/error.log;
  4. events {
  5. worker_connections 1024;
  6. }
  7. http {
  8. include mime.types;
  9. default_type application/octet-stream;
  10. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  11. '$status $body_bytes_sent "$http_referer" '
  12. '"$http_user_agent" "$http_x_forwarded_for"';
  13. access_log /var/log/nginx/access.log;
  14. sendfile on;
  15. keepalive_timeout 65;
  16. # Nginx cache configuration
  17. proxy_cache_path /var/nginx/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m;
  18. proxy_temp_path /var/nginx/cache/tmp;
  19. proxy_cache_key "$scheme$host$request_uri";
  20. gzip on;
  21. server {
  22. #listen 80;
  23. server_name _;
  24. location /nginx_status {
  25. stub_status on;
  26. access_log off;
  27. }
  28. # redirect server error pages to the static page /50x.html
  29. #
  30. error_page 500 502 503 504 /50x.html;
  31. location = /50x.html {
  32. root /usr/local/www/nginx-dist;
  33. }
  34. # proxy the PHP scripts to Apache listening on 127.0.0.1:8080
  35. #
  36. location ~ \.php$ {
  37. proxy_pass http://127.0.0.1:8080;
  38. include /usr/local/etc/nginx/proxy.conf;
  39. }
  40. }
  41. include /usr/local/etc/nginx/vhost/*;
  42. }

保存并退出。

下一步,在 nginx 目录下面,创建一个 proxy.conf 文件,使其作为反向代理 :


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

粘贴如下配置:


  1. proxy_buffering on;
  2. proxy_redirect off;
  3. proxy_set_header Host $host;
  4. proxy_set_header X-Real-IP $remote_addr;
  5. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  6. client_max_body_size 10m;
  7. client_body_buffer_size 128k;
  8. proxy_connect_timeout 90;
  9. proxy_send_timeout 90;
  10. proxy_read_timeout 90;
  11. proxy_buffers 100 8k;
  12. add_header X-Cache $upstream_cache_status;

保存并退出。

最后一步,为 nginx 的高速缓存创建一个“/var/nginx/cache”的新目录:


  1. mkdir -p /var/nginx/cache

步骤 7 - 配置 Nginx 的虚拟主机

在这个步骤里面,我们需要创建一个新的虚拟主机域“saitama.me”,其文档根目录为“/usr/local/www/saitama.me”,日志文件放在“/var/log/nginx”目录下。

我们必须做的第一件事情就是创建新的目录来存放虚拟主机配置文件,我们创建的新目录名为“vhost”。创建它:


  1. cd /usr/local/etc/nginx/
  2. mkdir vhost

创建好 vhost 目录,然后我们就进入这个目录并创建一个新的虚拟主机文件。这里我取名为“saitama.conf”:


  1. cd vhost/
  2. nano -c saitama.conf

粘贴如下虚拟主机的配置:


  1. server {
  2. # Replace with your freebsd IP
  3. listen 192.168.1.123:80;
  4. # Document Root
  5. root /usr/local/www/saitama.me;
  6. index index.php index.html index.htm;
  7. # Domain
  8. server_name www.saitama.me saitama.me;
  9. # Error and Access log file
  10. error_log /var/log/nginx/saitama-error.log;
  11. access_log /var/log/nginx/saitama-access.log main;
  12. # Reverse Proxy Configuration
  13. location ~ \.php$ {
  14. proxy_pass http://127.0.0.1:8080;
  15. include /usr/local/etc/nginx/proxy.conf;
  16. # Cache configuration
  17. proxy_cache my-cache;
  18. proxy_cache_valid 10s;
  19. proxy_no_cache $cookie_PHPSESSID;
  20. proxy_cache_bypass $cookie_PHPSESSID;
  21. proxy_cache_key "$scheme$host$request_uri";
  22. }
  23. # Disable Cache for the file type html, json
  24. location ~* .(?:manifest|appcache|html?|xml|json)$ {
  25. expires -1;
  26. }
  27. # Enable Cache the file 30 days
  28. location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
  29. proxy_cache_valid 200 120m;
  30. expires 30d;
  31. proxy_cache my-cache;
  32. access_log off;
  33. }
  34. }

保存并退出。

下一步,为 nginx 和虚拟主机创建一个新的日志目录“/var/log/”:


  1. mkdir -p /var/log/nginx/

如果一切顺利,在文件的根目录下创建目录 saitama.me 用作文档根:


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

步骤 8 - 测试

在这个步骤里面,我们只是测试我们的 nginx 和虚拟主机的配置。

用如下命令测试 nginx 的配置:


  1. nginx -t

如果一切都没有问题,用 sysrc 命令添加 nginx 为开机启动项,并且启动 nginx 和重启 apache:


  1. sysrc nginx_enable=yes
  2. service nginx start
  3. service apache24 restart

一切完毕后,在 saitama.me 目录下,添加一个新的 phpinfo 文件来验证 php 的正常运行:


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

然后访问这个域名: www.saitama.me/info.php

Nginx 作为 Apache 的反向代理运行了,PHP 也同样工作了。

这是另一个结果:

测试无缓存的 .html 文件。


  1. curl -I www.saitama.me

测试有三十天缓存的 .css 文件。


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

测试缓存的 .php 文件:


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

全部搞定。

总结

Nginx 是最受欢迎的 HTTP 和反向代理服务器,拥有丰富的功能、高性能、低内存/RAM 占用。Nginx 也用于缓存, 我们可以在网络上缓存静态文件使得网页加速,并且缓存用户请求的 php 文件。 Nginx 容易配置和使用,可以将它用作 HTTP 服务器或者 apache 的反向代理。

本文来自合作伙伴“Linux中国”

原文发布时间为:2013-04-02.

时间: 2024-10-03 18:10:54

如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理的相关文章

如何在 FreeBSD 10.2 上安装使用 Nginx 的 Ghost

如何在 FreeBSD 10.2 上安装使用 Nginx 的 Ghost Node.js 是用于开发服务器端应用程序的开源的运行时环境.Node.js 应用使用 JavaScript 编写,能在任何有 Node.js 运行时的服务器上运行.它跨平台支持 Linux.Windows.OSX.IBM AIX,也包括 FreeBSD.Node.js 是 Ryan Dahl 以及在 Joyent 工作的其他开发者于 2009 年创建的.它的设计目标就是构建可扩展的网络应用程序. Ghost 是使用 No

windows安装nginx部署步骤图解(反向代理与负载均衡)_nginx

一.下载安装Nginx(本文环境为windows xp 32bit环境) 解压nginx-1.0.11.zip,进入nginx-1.0.11,在命令行中执行命令让Nginx启动.具体操作如下图: 测试是否安装成功,输入地址:http://localhost:8090 浏览器显示结果如下图: OK,Nginx部署成功了. 二.关于Nginx的反向代理配置. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器

Ubuntu14编译安装Nginx同时配置Google反向代理 + SSL 证书

在看这篇文章之前,首先你得准备一台墙外的服务器或 VPS,本文默认用 root 用户,并操作在系统的 /root 目录下,为了安全考虑,请自行更换目录. 一.编译安装 Nginx 1.首先更新下系统 sudo apt-get update && sudo apt-get upgrade 2.安装的 Nginx 需要的包以及 Git sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev libssl-dev build-essential

如何在Ubuntu 16.04上安装OTRS(开源问题单系统)

OTRS ,即开源问题单(ticket)申请系统,是一个用于客户服务.帮助台和 IT 服务管理的开源问题单软件.该软件是用 Perl 和 javascript 编写的.对于那些需要管理票据.投诉.支持请求或其他类型的报告的公司和组织来说,这是一个问题单解决方案.OTRS 支持包括 MySQL.PostgreSQL.Oracle 和 SQL Server 在内的多个数据库系统,它是一个可以安装在 Windows 和 Linux 上的多平台软件. 在本教程中,我将介绍如何在 Ubuntu 16.04

在 FreeBSD 10.1中安装 Mate 桌面

在 FreeBSD 10.1中安装 Mate 桌面 FreeBSD是全文本模式的系统,然而有些新用户想要使用GUI桌面环境.这个教程就是帮助你在Freebsd 10.1中安装Mate桌面. 下面是我的系统细节: root@Freebsd-unixmen:~ # uname -a FreeBSD Freebsd-unixmen 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014 root@releng

如何在 Ubuntu 和 CentOS 上启用 Nginx 的 HTTP/2 协议支持

HTTP/2 是 HTTP 网络协议的主要修订版本,其专注于 HTTP 协议的性能改进.HTTP/2 协议的目标是减少延迟,并且允许在 Web 浏览器和服务器之间的一个连接上并行发起多个请求,因此 Web 应用程序会更快.在本篇教程中,我们将像你展示如何在安装有 Ubuntu 或 CentOS 作为操作系统的 Linux VPS 上使用开启 Nginx 的 HTTP/2 协议.如果你使用 Apache,你可以查看我们的另一篇教程:如何在 Ubuntu 上开启 Apache 的 HTTP/2 协议

如何在Ubuntu 14.04上安装轻量级web服务器Cherokee

如何在Ubuntu 14.04上安装轻量级web服务器Cherokee Cherokee 是一个免费,开源,高性能轻量级的全功能web服务器,支持大部分主流操作系统(Linux. Mac OS X. Solaris 和 BSD).它支持TLS/SSL.FastCGI. SCGI. PHP. uWSGI. SSI. CGI. LDAP. HTTP代理. 视频流处理. 内容缓存. 流量控制. 虚拟主机.Apache兼容的日志文件,以及负载均衡等功能. 今天我们介绍一下怎样在Ubuntu Server

如何在MacBook Pro Retina上安装Linux

如何在MacBook Pro Retina上安装Linux MacBook Pro拥有非常强大的配置,但是有些人想强上加强,他们想用Linux系统. 不管您是想要更开放和个性化的操作系统又或者是您只想要使用某些在Linux特有的软件,您都会想要在您的MacBook上安装Linux. 可惜的是MacBook Pro们可是一块块密不透风砖头,让您想装其他系统又无从下手.尤其是Linux,比在MacBook上装Windows还难. Boot Camp对于Linux来说也没有什么用处. 虽然如此,但并不

Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码

Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码 问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubuntu上有什么可行的方法来下载完整的内核源码呢? 在给你的Linux安装完整内核源码之前,先问问自己是否真的需要这样做.如果你仅仅是尝试去编译一个内核模块或是为内核定制驱动,你并不需要完整的内核源码树.你只需要安装一些与内核对应的头文件,这样就足够了. 只有在你需要生成一个定制的内核,而且内核源码中的