⑴ 用Nginx如何配置运行无扩展名PHP文件或非.PHP扩展名文件
|在Nginx中能来做到吗?是可以的。只需将nginx.conf文件源中的默认location ~ .php$ {…..} 上的正则表达式 更改为:location ~ (|.php)$ {…} 就可以了。同理,可以运行非.php扩展名的PHP文件,如 abc.html, abc.asp, abc.net 等扩展名的PHP文件。
⑵ 如何正确配置Nginx+PHP
其实没多复杂1. 将nginx和php都装好了2. 然后配置nginx,将php请求分发给php-fpm处理linux下的配置文件一般在/usr/local/nginx/conf/nginx.conf找到下面字样,并取消注释,且注意这个$document_root这个地方(原本应为$script***的,改成$document_root)location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }3.启动nginx和php-fpm,然后写个phpinfo脚本测试下成功与否就可以了
⑶ 如何正确配置 Nginx+PHP
你这问题问的好尴尬啊如果在windows系统上,直接装一个集成的phpstudy就好了如果是在linux系统上,编译安装php的时候加上开启php-fpm(这很重要),然后在安装nginx, linux上安装的时候注意文件权限,一般我会把php-fpm用户设置为nobody, nginx也是设置为nobody,至于具体要求请自行网络,这里只给你一个思路
⑷ 如何在Nginx下配置PHP程序环境
Linux 系统 php 在编译的时候 可以选择开启php-fpm 这个模块就是支持Nginx 的。也可以加入支持apache的模块 apx2 ,php编译成功之后,Nginx建立虚拟主机的配置文件 只需要加入php的解析模块就可以了。
⑸ nginx 使用php解析的基本几个配置
#运行用户
user nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;
#全局错误日志及PID文件
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#工作模式及连接数上限
events {
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,
#仅用于linux2.6以上内核,可以大大提高nginx的性能
use epoll;
#单个后台worker process进程的最大并发链接数
worker_connections 1024;
# 并发总数是 worker_processes 和 worker_connections 的乘积
# 即 max_clients = worker_processes * worker_connections
# 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4 为什么
# 为什么上面反向代理要除以4,应该说是一个经验值
# 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000
# worker_connections 值的设置跟物理内存大小有关
# 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数
# 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
# 我们来看看360M内存的VPS可以打开的文件句柄数是多少:
# $ cat /proc/sys/fs/file-max
# 输出 34336
# 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
# 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置
# 使得并发总数小于操作系统可以打开的最大文件数目
# 其实质也就是根据主机的物理CPU和内存进行配置
# 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
# ulimit -SHn 65535
}
http {
#设定mime类型,类型由mime.type文件定义
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 指令指定 nginx 是否调用 sendfile 函数(zero 方式)来输出文件,
#对于普通应用,必须设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
#以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
#开启gzip压缩
gzip on;
gzip_disable "MSIE [1-6].";
#设定请求缓冲
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
#设定虚拟主机配置
server {
#侦听80端口
listen 80;
#定义使用 www.nginx.cn访问
server_name www.nginx.cn;
#定义服务器的默认网站根目录位置
root html;
#设定本虚拟主机的访问日志
access_log logs/nginx.access.log main;
#默认请求
location / {
#定义首页索引文件的名称
index index.php index.html index.htm;
}
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#静态文件,nginx自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
#过期30天,静态文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 30d;
}
#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#禁止访问 .htxxx 文件
location ~ /.ht {
deny all;
}
}
}
网页链接
⑹ php nginx配置文件写法求指教
^匹配URL开头.*是任意多个字符例如~^一条可以匹配example.com/images/123.phpexample.com/upfiles/456.php等,但不能匹配example.com/a/images/123.php(/images必须在起始处)~.*一条可以匹配example.com/backup/123.bakexample.com/backup2/123.bakexample.com/123.bak只要是.bak文件都能匹配第一条禁止访问指定文件夹中的PHP文件,第二条禁止访问任何bak文件
⑺ 云服务器如何配置nginx支持php
[[email protected] ~]# wget http://am1.php.net/get/php-7.1.2.tar.gz/from/this/mirror[[email protected] ~]# tar xzvf php-7.1.2.tar.gz[[email protected] ~]# cd php-7.1.2/[[email protected] ~]# ./configure –prefix=/usr/local/php –enable-fpm[[email protected] php-7.1.2]# make&&make install查看是否成功编译安装PHP[[email protected] php-7.1.2]# php -vPHP 7.1.2 (fpm-fcgi) (built: Apr 14 2017 20:21:53)Copyright (c) 1997-2017 The PHP GroupZend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies 编译安装完成后PHP不具备配置文件php.ini,此时只需复制php.ini-proction到 /usr/local/lib/php.ini即可,php.ini文件一般在/usr/local/lib/和/etc目录下 [[email protected] php-7.1.2]# cp php.ini-proction /usr/local/lib/php.ini[[email protected] php]# /usr/local/php/sbin/php-fpm[14-Apr-2017 20:59:49] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)[14-Apr-2017 20:59:49] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'[14-Apr-2017 20:59:49] ERROR: FPM initialization failed启动php-fpm发现缺乏配置文件/usr/local/php/etc/php-fpm.conf此时只需复制php-fpm的配置文件在安装php时提供的配置文件的模版/usr/local/php/etc/php-fpm.conf.default到相应/usr/local/php/etc/php-fpm.conf即可 [[email protected] etc]# /usr/local/php/sbin/php-fpm [14-Apr-2017 21:14:32] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/﹡.conf' from /usr/local/php/etc/php-fpm.conf at line 125.[14-Apr-2017 21:14:32] ERROR: No pool defined. at least one pool section must be specified in config file[14-Apr-2017 21:14:32] ERROR: failed to post process the configuration[14-Apr-2017 21:14:32] ERROR: FPM initialization failed [[email protected] etc]# cp php-fpm.conf.default /usr/local/php/etc/php-fpm.conf [[email protected] etc]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf[[email protected] etc]# /etc/init.d/php-fpm [14-Apr-2017 21:23:02] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)[14-Apr-2017 21:23:02] ERROR: FPM initialization failed[[email protected] etc]# netstat -nldp|grep 9000tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste [[email protected] php-7.1.2]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm[[email protected] php-7.1.2]# chmod a+x /etc/init.d/php-fpm [[email protected] php-7.1.2]# ll /etc/init.d/php-fpm -rwxr-xr-x 1 root root 2401 4月 14 21:26 /etc/init.d/php-fpm[[email protected] php-7.1.2]# /etc/init.d/php-fpm startStarting php-fpm [14-Apr-2017 21:28:09] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)[14-Apr-2017 21:28:09] ERROR: FPM initialization failed failed[[email protected] php-7.1.2]# netstat -nldp |grep 9000tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste [[email protected] php-7.1.2]# kill 3721[[email protected] php-7.1.2]# netstat -nldp |grep 9000[[email protected] php-7.1.2]# /etc/init.d/php-fpm startStarting php-fpm done[[email protected] php-7.1.2]# service php-fpm statusphp-fpm (pid 3927) is running…[[email protected] php-7.1.2]# chkconfig –add php-fpm[[email protected] php-7.1.2]# chkconfig php-fpm –level 345 on配置nginx支持PHP修改nginx的配置文件,支持php文件的解析,找到location的添加位置,在后面添加下面这个locationlocation ~ .php$ { root /usr/share/nginx/html; #指定php的根目录 fastcgi_pass 127.0.0.1:9000;#php-fpm的默认端口是9000 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
⑻ 如何正确配置Nginx + PHP
对很多人而言,配置Nginx+PHP无外乎就是搜索一篇教程,然后拷贝粘贴。听上去似乎也没什么问题,可惜实际上网络上很多资料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷贝粘贴,早晚有一天会为此付出代价。假设我们用PHP实现了一个前端控制器,或者直白点说就是统一入口:把PHP请求都发送到同一个文件上,然后在此文件里通过解析「REQUEST_URI」实现路由。此时很多教程会教大家这样配置Nginx+PHP:server {listen 80;server_name foo.com;root /path;location / {index index.html index.htm index.php;if (!-e $request_filename) {rewrite . /index.php last;}}location ~ .php$ {include fastcgi_params;fastcgi_param SCRIPT_FILENAME /path$fastcgi_script_name;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;}这里面有很多错误,或者说至少是坏味道的地方,大家看看能发现几个。…我们有必要先了解一下Nginx配置文件里指令的继承关系:Nginx配置文件分为好多块,常见的从外到内依次是「http」、「server」、「location」等等,缺省的继承关系是从外到内,也就是说内层块会自动获取外层块的值作为缺省值(有例外,详见参考)。参考:UNDERSTANDING THE NGINX CONFIGURATION INHERITANCE MODEL…让我们先从「index」指令入手吧,在问题配置中它是在「location」中定义的:location / {index index.html index.htm index.php;}一旦未来需要加入新的「location」,必然会出现重复定义的「index」指令,这是因为多个「location」是平级的关系,不存在继承,此时应该在「server」里定义「index」,借助继承关系,「index」指令在所有的「location」中都能生效。参考:Nginx Pitfalls…接下来看看「if」指令,说它是大家误解最深的Nginx指令毫不为过:if (!-e $request_filename) {rewrite . /index.php last;}很多人喜欢用「if」指令做一系列的检查,不过这实际上是「try_files」指令的职责:try_files $uri $uri/ /index.php;除此以外,初学者往往会认为「if」指令是内核级的指令,但是实际上它是rewrite模块的一部分,加上Nginx配置实际上是声明式的,而非过程式的,所以当其和非rewrite模块的指令混用时,结果可能会非你所愿。参考:IfIsEvil and How nginx “location if” works…下面看看「fastcgi_params」配置文件:include fastcgi_params;Nginx有两份fastcgi配置文件,分别是「fastcgi_params」和「fastcgi.conf」,它们没有太大的差异,唯一的区别是后者比前者多了一行「SCRIPT_FILENAME」的定义:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;注意:$document_root 和 $fastcgi_script_name 之间没有 /。原本Nginx只有「fastcgi_params」,后来发现很多人在定义「SCRIPT_FILENAME」时使用了硬编码的方式,于是为了规范用法便引入了「fastcgi.conf」。不过这样的话就产生一个疑问:为什么一定要引入一个新的配置文件,而不是修改旧的配置文件?这是因为「fastcgi_param」指令是数组型的,和普通指令相同的是:内层替换外层;和普通指令不同的是:当在同级多次使用的时候,是新增而不是替换。换句话说,如果在同级定义两次「SCRIPT_FILENAME」,那么它们都会被发送到后端,这可能会导致一些潜在的问题,为了避免此类情况,便引入了一个新的配置文件。参考:FASTCGI_PARAMS VERSUS FASTCGI.CONF – NGINX CONFIG HISTORY此外,我们还需要考虑一个安全问题:在PHP开启「cgi.fix_pathinfo」的情况下,PHP可能会把错误的文件类型当作PHP文件来解析。如果Nginx和PHP安装在同一台服务器上的话,那么最简单的解决方法是用「try_files」指令做一次过滤:try_files $uri =404;参考:Nginx文件类型错误解析漏洞…依照前面的分析,给出一份改良后的版本,是不是比开始的版本清爽了很多:server {listen 80server_name foo.com;root /path;index index.html index.htm index.php;location / {try_files $uri $uri/ /index.php;}location ~ .php$ {try_files $uri =404;include fastcgi.conf;fastcgi_pass 127.0.0.1:9000;}}实际上还有一些瑕疵,主要是「try_files」和「fastcgi_split_path_info」不够兼容,虽然能够解决,但方案比较丑陋,具体就不多说了,有兴趣的可以参考问题描述。补充:因为「location」已经做了限定,所以「fastcgi_index」其实也没有必要.
⑼ php在nginx下怎么配置文件
nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回给Nginx本文以php-fpm为例介绍如何使nginx支持PHP.
⑽ 如何正确配置 Nginx + PHP
1. php用php-fpm启动,然后nginxlocation ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }这样就可以了2.安装一个集成的软件phpstudy