传说中nginx要比apache的负载均衡好的多,堪称神器。奈何,本人一直对新鲜事物不感冒。不过服务器上面有很多都是用nginx来做http服务器,今天偷闲了解一下。上网上搜了一下,大多数都是介绍linux下的nginx与php的配置。本人现在在windows下面想尝试一下,发现资料并不多,且并不是很准确。其间也遇到了很多问题,还好折腾了几次总算搞定了。下面说一下windows下面nginx和php的配置,不对的地方大家多担待。
准备资源:
原来我在用APM,很好用,集成了Apache,PHP和MySQL。这次把它关掉需要重新下载这三个文件。资源一定要准备好,不然玩不转啊。呵呵。
Nginx 下载地址:http://sysoev.ru/nginx/nginx-0.8.16.zip
PHP 下载地址:http://cn.php.net/distributions/php-5.2.11-Win32.zip
MySQL 下载地址:http://download.mysql.cn/download_file/zip/5.0/mysql-5.0.22-win32.zip
配置PHP:
把下载完的php解压到:D:\php,随便你找个地方,自己喜欢就好。备份php.ini-recommended,并将其重命名为php.ini。然后编辑php.ini。
基本上和使用apache一样,php的配置文件改动的地方并不是很多,像打开扩展文件之类的就不详谈了,有几个重点需要大家注意一下:
指定docroot??php文件的存放目录,即你的documentroot。doc_root = “e:\www”
扩展存放目录 extension_dir??更改为真实的扩展存放地址。extension_dir = “./ext”
默认时区更改??在[Date]里面增加:date.timezone = Asia/ChongQing
因为nginx需要的是cgi方式的php,所以如下几个地方是重点,否则nginx无法打开php文件:
enable_dl = On
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1
如果你使用MySQL,那么和我一样拷贝php5ts.dll和libmysql.dll(开启MYSQL)至C:\WINDOWS\system32下面。并且拷贝php.ini至C:\WINDOWS目录下。
配置Nginx:
将下载下来的nginx解压到D:\nginx目录中。很明显conf目录里存放的应该是配置文件,那么还说啥?过去更改nginx.conf文件是必须的。
不看不知道,一看还真是挺开心的,这配置文件很清楚,很简单。最起码比apache要简单的多。让人看着发自内心的欣喜。具体配置如下:
打开错误日志:error_log logs/error.log;
更改线程数,因为是本地开发使用,所以线程不开太多了:worker_connections 64;
更改默认文件编码:charset gbk;
具体配置还有一些,但是不适合在这里给出,稍候我给出我的配置文件全文及截图描述。大家详细看一下即可。
启动Nginx和PHP:
启动Nginx很简单,使用nginx目录下面的nginx.exe双击即可。可是php的启动因为要使用cgi方式,所以有些特殊。我参照网上的方法下载了RunHiddenConsole.exe,使用该工具用其执行的cmd窗口会自动关闭,否则你看一个CMD窗口一直在那晃来晃去,头会晕的。
创建start_php.bat,来启动php,文件内容如下:
@echo off
echo Starting PHP FastCGI...
RunHiddenConsole.exe d:\php\php-cgi.exe -b 127.0.0.1: 9000 -c d:\php\php.ini
创建stop_nginx.bat,来关闭php和nginx进程,文件内容如下:
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit
效果图:
因为我用的就是默认的80端口,所以直接访问localhost即可。下面给出两个截图。
welcome nginx
nginx 目录结构
配置文件图解:
这里的图就是随便截了一下,文字也没有标红,列位对付着看吧。自己乱写的,把没用的地方都去掉了(不是没用,是我没有更改和扩展这些配置)。
nginx conf desc
nginx配置文件:
php.ini就不给出来了,一会儿给一下下载地址得了,那玩意太长了。只放出nginx的配置文件得了,列位莫怪。
#user nobody ;
worker_processes 1 ;
error_log logs/error.log ;
#error_log logs/error.log notice ;
#error_log logs/error.log info ;
#pid logs/nginx.pid ;
events {
worker_connections 64 ;
}
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 logs/access.log main ;
sendfile on ;
#tcp_nopush on ;
#keepalive_timeout 0 ;
keepalive_timeout 65 ;
#gzip on ;
server {
listen 80 ;
server_name localhost ;
charset gbk ;
#access_log logs/host.access.log main ;
location / {
root e:\www ;
index index.html index.htm index.php ;
autoindex on ;
}
#error_page 404 / 404.html ;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html ;
location = /50x.html {
root html ;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1: 80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1 ;
# }
# pass the PHP scripts to FastCGI server listening on 127.0.0.1: 9000
#
#location ~ \.php$ {
# root html ;
# fastcgi_pass 127.0.0.1: 9000 ;
# fastcgi_index index.php ;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name ;
# include fastcgi_params ;
# }
location ~ \.php$ {
fastcgi_pass 127.0.0.1: 9000 ;
fastcgi_index index.php ;
fastcgi_param SCRIPT_FILENAME e:\www$fastcgi_script_name ;
include fastcgi_params ;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all ;
# }
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000 ;
# listen somename: 8080 ;
# server_name somename alias another.alias ;
# location / {
# root html ;
# index index.html index.htm ;
# }
# }
# HTTPS server
#
#server {
# listen 443 ;
# server_name localhost ;
# ssl on ;
# ssl_certificate cert.pem ;
# ssl_certificate_key cert.key ;
# ssl_session_timeout 5m ;
# ssl_protocols SSLv2 SSLv3 TLSv1 ;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP ;
# ssl_prefer_server_ciphers on ;
# location / {
# root html ;
# index index.html index.htm ;
# }
# }
}

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

SublimeText3 English version
Recommended: Win version, supports code prompts!

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Dreamweaver CS6
Visual web development tools

Atom editor mac version download
The most popular open source editor
