当前位置: 首页 > 科技观察

如何在FreeBSD10.2上安装Nginx作为Apache的反向代理

时间:2023-03-17 14:47:33 科技观察

Nginx是一个免费开源的HTTP和反向代理服务器,也可以用作POP3/IMAP邮件代理服务器。Nginx是一款高性能的Web服务器,具有功能丰富、结构简单、内存占用低等特点。第一个版本由IgorSysoev于2002年发布,现在被许多大型科技公司使用,包括Netflix、Github、Cloudflare、WordPress.com等。  在本教程中我们将“安装和配置Nginx网络服务器作为freebsd10.2系统上的Apache反向代理”。Apache将在端口8080上运行PHP,我们将配置Nginx在端口80上运行以接收用户/访客请求。如果80端口收到来自用户浏览器的网页请求,Nginx会将请求传递给运行在8080端口的Apacheweb服务器和PHP。更新系统  使用SSH身份验证登录到您的FreeBSD服务器,使用以下命令更新您的系统:freebsd-updatefetch  freebsd-updateinstall  第二步:安装Apache  Apache是开源的,也是最广泛使用的网络服务器。FreeBSD默认没有安装Apache,但是我们可以直接通过ports或者/usr/ports/www/apache24下的软件包安装,或者直接使用pkg命令从FreeBSD的软件库中安装。在本教程中,我们将使用pkg命令从FreeBSD软件存储库进行安装:pkginstallapache24  第三步:安装PHP  一旦Apache安装成功,就会安装PHP,它负责处理用户对PHP的请求文件。我们将使用以下pkg命令安装PHP:pkginstallphp56mod_php56php56-mysqlphp56-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/  cpphp.ini-productionphp.ini  接下来,通过编辑Apache目录中的“httpd.conf”文件来配置Apache:cd/usr/local/etc/apache24  nano-chttpd.conf  端口配置在第52行:Listen8080  服务器名称在第219行配置:ServerName127.0.0.1:8080  在第277行,添加Apache将用于为目录请求提供服务的DirectoryIndex文件:DirectoryIndexindex.phpindex.html  在线287接下来,配置Apache并添加脚本支持:FilesMatch>  保存退出。  现在使用sysrc命令将Apache添加为启动项:sysrcapache24_enable=yes  然后使用以下命令测试Apache配置:apachectlconfigtest  如果这里没有问题,那么启动Apache!serviceapache24start  如果都搞定了,在“/usr/local/www/apache24/data”目录下创建一个phpinfo文件,验证PHP在Apache下是否顺利运行:cd/usr/local/www/apache24/data  echo”">info.php  现在可以访问freebsd服务器IP:192.168.1.123:8080/info.php。  Apache和PHP在8080端口上  Apache和PHP在8080端口上运行。  第五步:安装Nginx  Nginx可以提供一个高性能的web服务器和反向代理服务器,内存占用低。在这一步中,我们将使用Nginx作为Apache的反向代理,所以让我们使用pkg命令安装它!pkginstallsnginx  第六步:配置Nginx  Nginx安装完成后,在“nginx.conf”文件中,我们需要新建一个配置文件来替换原来的nginx配置文件。切换到“/usr/local/etc/nginx/”目录,备份默认的nginx.conf文件:cd/usr/local/etc/nginx/  mvnginx.confnginx.conf.original  你可以创建一个新的nginx配置文件:nano-cnginx.conf  然后粘贴下面的配置:userwww;worker_processes1;error_log/var/log/nginx/error.log;events{worker_connections1024;}http{includemime.types;default_typeapplication/octet-stream;log_formatmain'$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;sendfileon;keepalive_timeout65;#Nginxcacheconfigurationproxy_cache_path/var/nginx/cachelevels=1:2keys_zone=my-cache:8mmax_size=1000minactive=600m;proxy_temp_path/var/nginx/cache/tmp;proxy_cache_key"$scheme$host$request_uri";gzipon;server{#listen80;server_name_;location/nginx_status{stub_statuson;access_logoff;}#redirectservererrorpagestothestaticpage/50x.html#error_page500502503504/50x.html;location=/50x.html{root/usr/local/www/nginx-dist;}#proxythePHPscriptstoApachelisteningon127.0.0.1:8080#location~\.php${proxy_passhttp://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-cproxy.conf  粘贴以下配置:proxy_bufferingon;proxy_redirectoff;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;client_max_body_size10m;client_body_buffer_size128k;proxy_connect_timeout90;proxy_send_timeout90;proxy_read_timeout90;proxy_buffers1008k;add_headerX-Cache$upstream_cache_status;  保存并退出。  ***第一步,为nginx缓存新建目录“/var/nginx/cache”:mkdir-p/var/nginx/cache  第七步:配置Nginx虚拟主机  这一步,我们需要新建一个虚拟主机域“saitama.me”,其文件根目录为“/usr/local/www/saitama.me”,日志文件放在“/var/log/nginx”目录下。  我们要做的第一件事是创建一个新目录来存放虚拟主机配置文件,我们创建的新目录称为“vhost”。创建:cd/usr/local/etc/nginx/  mkdirvhost  创建vhost目录后,我们再进入该目录,新建一个虚拟主机文件。这里我命名为“saitama.conf”:cdvhost/  nano-csaitama.conf  粘贴虚拟主机的配置如下:server{#ReplacewithyourfreebsdIPlisten192.168.1.123:80;#DocumentRootroot/usr/local/www/saitama.me;index.phpindex.htmlindex.htm;#Domainserver_namewww.saitama.mesaitama.me;#ErrorandAccesslogfileerror_log/var/log/nginx/saitama-error.log;access_log/var/log/nginx/saitama-access.logmain;#ReverseProxyConfigurationlocation~\.php${proxy_passhttp://127.0.0.1:8080;include/usr/local/etc/nginx/proxy.conf;#Cacheconfigurationproxy_cachemy-cache;proxy_cache_valid10s;proxy_no_cache$cookie_PHPSESSID;proxy_cache_bypass$cookie_PHPSESSID;proxy_cache_key"$scheme$host$request_uri";}#DisableCacheforthefiletypehtml,jsonlocation~*.(ca?:manifesthtml|?|xml|json)${expires-1;}#EnableCachethefile30dayslocation~*.(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)${proxy_cache_valid200120m;expires30d;proxy_cachemy-cache;access_logoff;}}  保存退出。  接下来,为nginx和虚拟主机创建一个新的日志目录“/var/log/”:mkdir-p/var/log/nginx/  如果一切顺利,在文件根目录下创建目录saitama.me作为文档根目录:cd/usr/local/www/  mkdirsaitama.me  步骤8:测试  在此步骤,我们只是测试我们的nginx和虚拟主机配置。  使用以下命令测试nginx的配置:nginx-t  如果一切正常,使用sysrc命令将nginx添加为启动项,启动nginx并重启apache:sysrcnginx_enable=yes  servicenginxstart  serviceapache24restart  一切完成后,在saitama.me目录下新增phpinfo文件,验证php是否正常运行:cd/usr/local/www/saitama.me  echo"">info.php  访问这个域名:www.saitama.me/info.php。  Virtualhost配置saitamame  Nginx作为Apache的反向代理运行,PHP也在工作。  这是另一个结果:  Testing.htmlfileswithoutcaching。使用no-cache  的curl-Iwww.saitama.me  html测试具有30天缓存的.css文件。curl-Iwww.saitama.me/test.css  css文件30天缓存  测试缓存.php文件:curl-Iwww.saitama.me/info.php  PHP文件缓存  全部完成。  总结  Nginx是最好的HTTP和反向代理服务器,具有丰富的功能、高性能、低内存/RAM占用空间。Nginx也用于缓存。我们可以缓存网络上的静态文件来加速网页,缓存用户请求的php文件。Nginx易于配置和使用,您可以将其用作HTTP服务器或Apache的反向代理。