Nginx中虚拟主机与指定访问路径的设置方法讲解

添加多个虚拟主机

最近在ubuntu上捣腾nginx,安装成功了,就只有rewrite没有试验,因为服务器上有多个网站,还不敢在服务器上尝试,慢慢来。网上查了一些文章,下了一篇留下来做试验。
nginx上虚拟主机的配置其实跟apache上的基本上类似。
需要注意的几点是:
第一、关于.htaccess配置,也就是为静态配置,在nginx上一般你要写在虚拟主机的配置文本中,但是我也有看到用包含文件解决这个问题的,即在虚拟主机配置脚本上include .htaccess文件,不过没有没有试过。
第二、计划好用何种方式运行php,fastcgi?我并不认为在网上流传的这种办法是一个好办法,相反我认为作为一个出色的反向代理服务器应该发挥其反向代理的优势,所以执行php的方式上请先斟酌好。
好了,回到正题上。
观察一下nginx的目录结构,大概你已经知道该怎么做了,跟apache的虚拟主机配置基本类似。
在/etc/nginx/sites-available上新建一个文件,比如叫www.jb51.net吧
然后

vi www.jb51.net

加入文件内容如下:

server
{
listen [::]:80;
server_name www.jb51.net jb51.net;
root /var/www/jb51.net;
index index.html index.htm index.php;
include /etc/nginx/common.conf;
location /nginx_status
{
stub_status on;
access_log off;
allow all;
}
}

简单的解释一下:
listen就是监听端口,不必多说;
server_name要多说几句,因为你可能想到了server_alias,其实在nginx中第一个就是server_name,后面的就是server_alias,所以在nginx中server alias name别名是不用另外声明的,这根apache有很大的区别,注意下。
index就是查找网页的先后顺序
include 是包含文件,www.jb51.net包含的文件是干啥用的呢?里面是指定php的运行方式,文件缓存等,我不妨把我提示的配置贴一个上来:

location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
expires max;
break;
}
location ~ .*\.php$ {
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}

最后 location /nginx_status相当与apache的server-status,就不多少说了。

location /nginx_status
{
stub_status on;
access_log off;
allow all;
}

然后第二步,建立软连接到sites-enable里面去

ln -s /etc/nginx/sites-available/www.jb51.net /etc/nginx/sites-enabled/www.jb51.net

你是否需要检查一下配置语法是不是正确呢?
检查一下:

/etc/init.d/nginx configtest

Testing nginx configuration: nginx.

没有返回错误,重启nginx就可以了。
/etc/init.d/nginx restart

指定访问路径

niginx 似乎没有虚拟目录的说法,但是可以指定请求路径时nginx访问的路径,也算是一个解决办法。

server {
listen    80 default;
server_name _;

location / {
root  html;
index 403.html;
}

location ~ //.ht {
deny all;
}

  location /phpadmin/ {
alias  /opt/www/phpadmin/;
index  index.php;
}
location ~ /.php$ {
include httpd.conf;
}
}

要注意的是, location /phpadmin/ {} 和 location /phpadmin {} 是完全不同的。

前者可以访问到目录,而后者将被重定向到服务器,如: http://127.0.0.1/phpadmin ,将被重定向到 http://_/phpadmin

下面这个配置和上面基本类似,唯一的不同是,所有对 /phpadmin/的访问将正确解析,而其他访问则返回页面不存在(404)的信息。

server {
listen    80 default;
server_name _;

location / {
root  html;
#index 403.html;

return 404;
}

location ~ //.ht {
deny all;
}

  location /phpadmin/ {
alias  /opt/www/phpadmin/;
index  index.php;
}
location ~ /.php$ {
include httpd.conf;
}
}
(0)

相关推荐

  • nginx配置虚拟主机vhost的方法详解

    前言 所谓虚拟主机,是说通过几个不同的url地址,都能到达nginx环境,只不过针对不同的url,处理的逻辑不同. nginx支持虚拟主机,但是浏览器等客户端不知道,所以虚拟主机的几个地址,应该是都指向nginx所在的ip地址,虚拟主机功能才能正常. 环境 系统环境:CentOS6.7 nginx version: nginx/1.8.1 方案 例如配置文件位于: /opt/nginx/conf/nginx.conf 在http {}的最后,添加如下行: include vhosts/*.con

  • Nginx虚拟主机多server_name的顺序问题

    Nginx配置文件中没有相关的rewrite跳转规则,那么就应该是MediaWiki的PHP程序做的跳转,但是,遍历了MediaWiki目录下的所有文件以及查询了MySQL数据库中的每个表,都没有发现记录有这个域名.后来,通过查看源代码发现MediaWiki是根据$_SERVER['SERVER_NAME']做的跳转,顺藤摸瓜,发现了下列问题: 在一个Nginx虚拟主机中,可以绑定多个server_name,例如: 而server_name的先后顺序的不同,对PHP程序中使用$_SERVER["

  • 为nginx设置默认虚拟主机(空主机头,默认主机头)

    最关键的一点事,在server的设置里面添加这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机. 这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500. 目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦.就可以这样设置: 复制代码 代码如下: server { listen 80 default; return 500; } 也可以把这些流量收集起来,导入到自己的网

  • nginx 虚拟主机设置实例(多网站配置)

    配置文件: 复制代码 代码如下: http {       server {       listen          80;       server_name     www.domain1.com;       access_log      logs/domain1.access.log main;       location / {       index index.html;       root  /var/www/domain1.com/htdocs;       }   

  • Nginx 安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)

    系统环境:RHEL5 [ 2.6.18-8.el5xen ] 软件环境: nginx-0.7.17 lighttpd-1.4.20.tar.gz pcre-6.6-1.1 pcre-devel-6.6-1.1 php-5.1.6-5.el5 参考下载地址: http://sysoev.ru/nginx/nginx-0.7.17.tar.gz (最新稳定版为0.6.32) http://www.lighttpd.net/download/lighttpd-1.4.20.tar.gz #######

  • Nginx中虚拟主机与指定访问路径的设置方法讲解

    添加多个虚拟主机 最近在ubuntu上捣腾nginx,安装成功了,就只有rewrite没有试验,因为服务器上有多个网站,还不敢在服务器上尝试,慢慢来.网上查了一些文章,下了一篇留下来做试验. nginx上虚拟主机的配置其实跟apache上的基本上类似. 需要注意的几点是: 第一.关于.htaccess配置,也就是为静态配置,在nginx上一般你要写在虚拟主机的配置文本中,但是我也有看到用包含文件解决这个问题的,即在虚拟主机配置脚本上include .htaccess文件,不过没有没有试过. 第二

  • 关于Nginx中虚拟主机的一些冷门知识小结

    目录 前言 对线上配置的一个小疑问 问题背景 实测结果 探索 排查网络 排查nginx 总结 前言 nginx的虚拟主机,不知道大家了解不.以前吧,如果在nginx上要反向代理多个服务,我一般是让nginx监听多个不同端口,比如8080/8081,不同端口,反向代理到不同的服务. server { listen 9981 so_keepalive=on; proxy_pass service1; } server { listen 9982 so_keepalive=on; proxy_pass

  • 星外虚拟主机平台国内五大域名接口设置方法

    例如,可以分别设置不同的域名查询接口及域名注册接口,即您可以用新网的域名接口查询,用万网的域名接口注册.不同的域名类型,可以用不同的域名接口来注册.例如:.cn 的域名可以用新网互联的域名接口来注册,.com 的域名可以用万网的域名接口来注册.让虚拟主机提供非常灵活的使用这些域名接口. 对于域名接口的设置,请进入 [星外虚拟主机平台]管理区---  点击 产品设置---  点击 域名注册---  来进行设置---  ----------------------------------------

  • nginx 配置虚拟主机,实现在一个服务器可以访问多个网站的方法

    在一台服务器上,访问不同的网站 通常有两种区分方式: 1.通过监听的端口号 2.通过域名 1.通过端口访问不同的主机: Nginx的配置文件: /usr/local/nginx/conf/nginx.conf Centos文件默认编码格式 latin1 查看编码格式的命令: :set fileencoding #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice;

  • nginx配置虚拟主机的详细步骤

    虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台"虚拟"的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW.FTP.Email等),同一台主机上的虚拟主机之间是完全独立的.从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样. 利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程.虚拟主机提供了在同一台服务器.同一组Nginx进程上运行多个网站的功能. 配

  • 关于idea中Java Web项目的访问路径问题

    说明 这里只以 servlet 为例,没有涉及到框架,但其实路径的基本原理和框架的关系不大,所以学了框架的同学如果对路径有疑惑的也可以阅读此文 项目结构 在 idea 中新建一个 Java Web 项目,项目的初始结构如下 ( 不同版本的 idea 可能略有区别 ) : 默认访问路径 当我们将项目的基本配置设置好后,启动 Tomcat,会发现直接出现的是 index.jsp 页面,此时浏览器的地址栏显示的是:localhost:8080,也就是说项目默认跳转到了 index.jsp 页面,而且打

  • linux系统虚拟主机开启支持Swoole Loader扩展的方法

    特别说明:只是安装支持Swoole扩展,主机并没有安装服务端.目前支持版本php5.4-php7.2. 1.登陆主机控制面板,找到[远程文件下载]这个功能. 2.远程下载文件填写http://download.myhostadmin.net/vps/SwooleLoader_linux.zip 下载保存的路径填写/others/ 或者从我们下载 3.点击控制面板[php版本],选择php5.3或以上版本,示例选择的是php5.5版本(注意:php5.2版本不能编辑php.ini,所以要选择以上版

  • 在MySQL中修改密码及访问限制的设置方法详解

    由于其源码的开放性及稳定性,且与网站流行编 挥镅 PHP的完美结合,现在很多站点都利用其当作后端数据库,使其获得了广泛应用.处于安全方面的考虑,需要为每一用户赋于对不同数据库的访问限制,以满足不同用户的要求.下面就分别讨论,供大家参考.    一.MySQL修改密码方法总结  首先要说明一点的是:一般情况下,修改MySQL密码是需要有mysql里的root权限的,这样一般用户是无法更改密码的,除非请求管理员帮助修改.    方法一    使用phpMyAdmin  (图形化管理MySql数据库的

  • 在nginx中实现单位时间内限制访问频率的教程

    首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出).nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开. 步骤如下: 首先nginx.conf里面添加如下内容: map $http_x_forwarded_for $clientRealIp { "" $remote_addr; ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; } #

随机推荐