如何将nginx安装为freebsd 10.2上apache的反向代理
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