全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Nginx配置多站点需要踩的坑

从Windows下的Apache转移到Linux下的Nginx,发现有很多坑需要踩。
以下就做个简单的记录,方便后来者爬坑。

配置Nginx,一般会遇到以下几个坑:

  •  配置nginx支持pathinfo模式 
  • - 优化URL,隐藏index.php 
  • - 同一服务器配置多站点 

配置pathinfo模式

在server(也就是你的站点,一个server对应一个站点)中输入以下内容:

location ~ ^(.+\.php)(.*)$ {
 root html/[站点目录]; #配置站点目录路径
 fastcgi_split_path_info ^(.+\.php)(.*)$;
 fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
 fastcgi_index index.php;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_script_name;
}

其中root html/[站点目录]这个一定要填写跟你server的站点目录路径,要不它默认为html,从而导致路径解析失败。会出现的现象就是,在之前配置的location中定义了root路径也无法生效,访问http://localhost会跳转到/usr/local/nginx/html/index.php[index.html],因为我的nginx是源码安装,所以路径可能不同,yum安装的话一般会在/usr/share/nginx/html/index.php[index.html].(PS:原默认关于fastcgi的配置可以注释掉)

隐藏index.php

隐藏index.php,大多数是采用Nginx的重写规则来进行的。
下面,就是博主的列出的一个参考:

location / {
 root html/[站点目录];
 index index.php;

 if (!-e $request_filename) {
  rewrite ^(.*)$ /index.php/$1;
 }
}

这里的站点目录是你程序(框架)的index.php所在的目录。例如,CI框架的话,root html/ci,其中index.php位于html/ci/index.php.

本质上,隐藏index.php文件就是重写URL。具体详细用法可以参考Nginx重写模块的官方文档:Module ngx_http_rewrite_module

同一服务器多站点配置

一般一台服务器不会单一的运行一个站点,往往是运行多个站点的。

在Nginx配置多站点是非常简单,便捷的。正如,前面所说的,一个server对应一个站点。例如:

server {
 listen 80;
 server_name www.leslie.net.cn;
 location / {
 ....
 }
}
server {
 listen 80;
 server_name www.hellomyfrend.top;
 location / {
 ....
 }
}

这样,就配置了两个站点,分别为www.leslie.net.cn和www.hellomyfrend.top.

这里贴一份配置文件作为参考:

user nginx nginx;
worker_processes 2;
#error_log logs/error.log;
error_log logs/error.log notice;
#error_log logs/error.log info;
pid  logs/nginx.pid;
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 logs/access.log main;
 rewrite_log on;
 sendfile  on;
#tcp_nopush  on;
#keepalive_timeout 0;
 keepalive_timeout 65;
#gzip on;
 server {
  listen 80;
  server_name  pay.zf2.com;
  location / {
   root html/zf2/pay/public;
   index index.php index.html index.htm; 
   if (!-e $request_filename){
    rewrite ^/(.*)$ /index.php/$1;
   }
  }
  location ~ ^(.+\.php)(.*)$ {
   root html/zf2/pay/public;
   fastcgi_split_path_info ^(.+\.php)(.*)$;
   fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
   fastcgi_index index.php;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
   fastcgi_param PATH_INFO $fastcgi_script_name;
  }
 }
 server {
  listen 80;
  server_name mp.zf2.com;
  location / {
   root html/zf2/server/public;
   index index.php index.html index.htm;
   if (!-e $request_filename){
   rewrite ^(.*)$ /index.php/$1;
   }
  }
  location ~ ^(.+\.php)(.*)$ {
   root html/zf2/server/public;
   fastcgi_split_path_info ^(.+\.php)(.*)$;
   fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
   fastcgi_index index.php;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
   fastcgi_param PATH_INFO $fastcgi_script_name;
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# nginx多站点配置  # nginx  # 配置多个站点  # 配置站点  # nginx 多站点配置方法集合  # Nginx 多站点配置实例详解  # Nginx 的多站点配置方案  # Nginx+Tomcat多站点部署的方法  # docker Nginx PHP-FPM单机多站点布署的方法  # Nginx环境下WordPress的多站点功能配置详解  # Nginx多ip部署多站点的实现步骤  # 重写  # 几个  # 多个  # 有很多  # 会在  # 一台  # 跟你  # 做个  # 分别为  # 本质上  # 配置文件  # 大家多多  # 跳转到  # 默认为  # 服务器配置  # 文档  # 转移到  # PATH_INFO  # br  # http 


相关文章: 完全自定义免费建站平台:主题模板在线生成一站式服务  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何在IIS管理器中快速创建并配置网站?  如何在服务器上配置二级域名建站?  建站主机选哪家性价比最高?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  官网网站制作腾讯审核要多久,联想路由器newifi官网  Android自定义listview布局实现上拉加载下拉刷新功能  如何快速生成橙子建站落地页链接?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  如何在万网自助建站中设置域名及备案?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  如何快速搭建FTP站点实现文件共享?  建站为何优先选择香港服务器?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  北京企业网站设计制作公司,北京铁路集团官方网站?  如何通过万网虚拟主机快速搭建网站?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  浅谈Javascript中的Label语句  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  长沙做网站要多少钱,长沙国安网络怎么样?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  制作公司内部网站有哪些,内网如何建网站?  学校为何禁止电信移动建设网站?  网站制作公司排行榜,四大门户网站排名?  高端建站如何打造兼具美学与转化的品牌官网?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  济南企业网站制作公司,济南社保单位网上缴费步骤?  孙琪峥织梦建站教程如何优化数据库安全?  ,交易猫的商品怎么发布到网站上去?  建站之星导航如何优化提升用户体验?  如何在腾讯云服务器快速搭建个人网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  香港服务器租用费用高吗?如何避免常见误区?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在服务器上三步完成建站并提升流量?  python的本地网站制作,如何创建本地站点?  高防服务器如何保障网站安全无虞?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  建站之星会员如何解锁更多建站功能?  模具网站制作流程,如何找模具客户?  建站之星伪静态规则如何设置?  已有域名能否直接搭建网站?  高防服务器租用如何选择配置与防御等级?  ppt制作免费网站有哪些,ppt模板免费下载网站?  建设网站制作价格,怎样建立自己的公司网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。