Nginx 虚拟主机配置的三种方式(基于域名)

Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置。

详解Nginx 虚拟主机配置的三种方式(基于IP) https://www.jb51.net/article/149774.htm

详解Nginx 虚拟主机配置的三种方式(基于端口) https://www.jb51.net/article/14978.htm

3、Nginx基于域名的虚拟主机配置

使用基于域名的虚拟主机配置是比较流行的方式,可以在同一个IP上配置多个域名并且都通过80端口访问。

3.1 假设服务器有个IP地址为192.168.2.155

[root@localhost ~]# ifconfig ens33:5 192.168.2.155/24 up
[root@localhost ~]# ifconfig
ens33:5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  inet 192.168.2.155 netmask 255.255.255.0 broadcast 192.168.2.255
  ether 00:0c:29:16:90:ae txqueuelen 1000 (Ethernet)

3.2 192.168.2.155对应的域名如下,配置主机的host文件便于测试

[root@localhost ~]# vim /etc/hosts
[root@localhost ~]# cat /etc/hosts|grep 192.168.2.155
192.168.2.155 www.oa.com
192.168.2.155 www.bbs.com
192.168.2.155 www.test.com

3.3 建立虚拟主机存放网页的根目录,并创建首页文件index.html

[root@localhost ~]# cd /data/www/
[root@localhost www]# mkdir www.oa.com
[root@localhost www]# mkdir www.bbs.com
[root@localhost www]# mkdir www.test.com
[root@localhost www]# echo www.oa.com > www.oa.com/index.html
[root@localhost www]# echo www.bbs.com > www.bbs.com/index.html
[root@localhost www]# echo www.test.com > www.test.com/index.html

3.4 修改nginx.conf,将虚拟主机配置文件包含进主文件

[root@localhost /]# cd /usr/local/nginx/conf/
[root@localhost conf]# ls
fastcgi.conf   fastcgi_params   koi-utf mime.types   nginx.conf   scgi_params   uwsgi_params   win-utf
fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default
[root@localhost conf]# vim nginx.conf

在nginx.conf文件末尾加入以下配置

# 在http段中找到以下内容并删除每行前面的“#”
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';

# 配置文件结尾的最后一个“}”之前加入以下语句,如下所示
include vhost/*.conf

3.5 编辑每个域名的配置文件(每个虚拟主机的配置文件)

[root@localhost conf]# cd vhost/
[root@localhost vhost]# cat www.oa.com.conf
 server {
  listen  192.168.2.155:80;
  server_name www.oa.com;

  access_log /data/logs/www.oa.com.log main;
  error_log /data/logs/www.oa.com.error.log;

  location / {
   root /data/www/www.oa.com;
   index index.html index.htm;
  }
 }

[root@localhost vhost]# cat www.bbs.com.conf
 server {
  listen  192.168.2.155:80;
  server_name www.bbs.com;

  access_log /data/logs/www.bbs.com.log main;
  error_log /data/logs/www.bbs.com.error.log;

  location / {
   root /data/www/www.bbs.com;
   index index.html index.htm;
  }
 }

[root@localhost vhost]# cat www.test.com.conf
 server {
  listen  192.168.2.155:80;
  server_name www.test.com;

  access_log /data/logs/www.test.com.log main;
  error_log /data/logs/www.test.com.error.log;

  location / {
   root /data/www/www.test.com;
   index index.html index.htm;
  }
 }

[root@localhost vhost]# cat /data/www/www.oa.com/index.html
www.oa.com
[root@localhost vhost]# cat /data/www/www.bbs.com/index.html
www.bbs.com
[root@localhost vhost]# cat /data/www/www.test.com/index.html
www.test.com

3.6 创建日志文件,否则无法启动nginx

[root@localhost /]# mkdir -p /data/logs
[root@localhost /]# touch /data/logs/www.oa.com.log
[root@localhost /]# touch /data/logs/www.oa.com.error.log
[root@localhost /]# touch /data/logs/www.bbs.com.log
[root@localhost /]# touch /data/logs/www.bbs.com.error.log
[root@localhost /]# touch /data/logs/www.test.com.log
[root@localhost /]# touch /data/logs/www.test.com.error.log
[root@localhost /]# ls /data/logs/
www.oa.com.error.log www.bbs.com.error.log www.test.com.error.log
www.oa.com.log  www.bbs.com.log  www.test.com.log

3.7 先测试配置文件然后再启动nginx

[root@localhost /]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# 启动nginx
[root@localhost sbin]# ./nginx

3.8 测试文件

[root@localhost vhost]# curl http://www.oa.com
www.oa.com
[root@localhost vhost]# curl http://www.bbs.com
www.bbs.com
[root@localhost vhost]# curl http://www.test.com
www.test.com

附:配置过程中的问题

1、最后测试时发生的问题

[root@localhost ~]# curl http://www.oa.com
curl: (7) Failed connect to www.oa.com:80; 拒绝连接

解决方法:

查看Nginx是否在监听相应的端口。

[root@localhost ~]# netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address   State
tcp  0  0 0.0.0.0:111    0.0.0.0:*    LISTEN
tcp  0  0 192.168.2.155:80  0.0.0.0:*    LISTEN
tcp  0  0 0.0.0.0:8080   0.0.0.0:*    LISTEN
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN
tcp  0  0 127.0.0.1:25   0.0.0.0:*    LISTEN
tcp6  0  0 :::111     :::*     LISTEN
tcp6  0  0 :::22     :::*     LISTEN
tcp6  0  0 :::23     :::*     LISTEN
tcp6  0  0 ::1:25     :::*     LISTEN

1、配置虚拟主机文件时要加上监听的IP地址,每个虚拟主机配置文件都一样。

listen  192.168.2.155:80;

2、配置完成后要重启服务器

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

(0)

相关推荐

  • 使用nginx配置基于域名的虚拟主机实现​

    1.什么是虚拟主机 虚拟主机使用特殊的技术,将一台运行的服务器,在逻辑上划分成多个主机.这样做主要是能让一台物理服务器上运行多个网站程序,这样就可以利用起来服务器剩余的空间.充分发挥服务器的作用.虚拟主机间,是完全独立的. 这样在使用nginx去搭建网站平台的时候,只需要使用一个nginx软件,就能运行多个基于ip或者基于域名的网站. 2.基于域名的虚拟主机 这种基于域名的虚拟主机是最常用的.基于ip的一般都是在内网中使用. (1)nginx.conf中的配置 只要在nginx.conf中添加上

  • Nginx 虚拟主机配置的三种方式(基于域名)

    Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于IP) https://www.jb51.net/article/149774.htm 详解Nginx 虚拟主机配置的三种方式(基于端口) https://www.jb51.net/article/14978.htm 3.Nginx基于域名的虚拟主机配置 使用基于域名的虚拟主机配置是比较流行的方式,可以在同一个IP上配置多个域名并且都通过80端

  • 详解Nginx 虚拟主机配置的三种方式(基于IP)

    Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于端口) https://www.jb51.net/article/14977.htm 详解Nginx 虚拟主机配置的三种方式(基于域名) https://www.jb51.net/article/14978.htm 1.基于IP的虚拟主机配置 如果同一台服务器有多个IP,可以使用基于IP的虚机主机配置,将不同的服务绑定在不同的IP上. 1.1

  • 详解Nginx 虚拟主机配置的三种方式(基于端口)

    Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于IP) https://www.jb51.net/article/14974.htm 详解Nginx 虚拟主机配置的三种方式(基于域名) https://www.jb51.net/article/14978.htm 2.Nginx基于端口的虚拟主机配置 如一台服务器只有一个IP或需要通过不同的端口访问不同的虚拟主机,可以使用基于端口的虚拟主机配

  • apache虚拟主机配置的三种方式(小结)

    目录 一.基于IP 二.基于主机名 三.基于端口 记事本打开httpd.conf文件 ,该文件在apache的目录下,如: D:\AppServ\Apache2.2\conf,修改如下两处: LoadModule vhost_alias_module modules/mod_vhost_alias.so //去掉前面的#,意思是启用apache的虚拟主机功能,第203行 Include conf/extra/httpd-vhosts.conf //去掉#的意思是从httpd-vhosts.con

  • 教你nginx跳转配置的四种方式

    目录 前言 一.配置server对应的域名 1.1.精确匹配 1.2.正则表达式 二.配置location 2.1.Location 匹配规则:仅匹配URI,忽略参数 2.2.举例 2.3.匹配顺序如下图 2.4.如何debug正则呢? 三.配置rewrite 3.1.重定向 3.2.如何查看rewrite日志 四.配置 proxy 五.小结 前言 最近工作用到了nginx,但是路由配置特殊,业务场景复杂,因此整理了集中nginx跳转的配置方式,如servername的正则,location的匹

  • nginx虚拟主机配置实例详解

    nginx虚拟主机配置 server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } 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.

  • SpringBoot配置 Druid 三种方式(包括纯配置文件配置)

    记录一下在项目中用纯 YML(application.yml 或者 application.properties)文件.Java 代码配置 Bean 和注解三种方式配置 Alibaba Druid 用于监控或者查看 SQL 状况: 1. 纯配置文件 .yml 或者 .properties (1)pom.xml 添加相关依赖 <!-- SPRINGBOOT WEB --> <dependency> <groupId>org.springframework.boot<

  • 详解Spring获取配置的三种方式

    目录 前言 Spring中获取配置的三种方式 通过@Value动态获取单个配置 通过@ConfigurationProperties+前缀方式批量获取 通过Environment动态获取单个配置 总结 前言 最近在写框架时遇到需要根据特定配置(可能不存在)加载 bean 的需求,所以就学习了下 Spring 中如何获取配置的几种方式. Spring 中获取配置的三种方式 通过 @Value 方式动态获取单个配置 通过 @ConfigurationProperties + 前缀方式批量获取配置 通

  • 详解Nginx虚拟主机配置中server_name的具体写法

    server_name指令可以设置基于域名的虚拟主机,根据请求头部的内容,一个ip的服务器可以配置多个域名.下面这些server_name的参数是有效的: server_name jb51.net; server_name jb51.net www.jb51.net; server_name *.jb51.net; server_name .jb51.net; server_name nginx.*; server_name jb51.netg bucknell.net brackley.org

  • 深入浅析Nginx虚拟主机

    一 虚拟主机 1.1 虚拟主机概念 对于Nginx而言,每一个虚拟主机相当于一个在同一台服务器中却相互独立的站点,从而实现一台主机对外提供多个 web 服务,每个虚拟主机之间是独立的,互不影响的. 1.2 虚拟主机类型 通过 Nginx 可以实现虚拟主机的配置,Nginx 支持三种类型的虚拟主机配置: 基于 IP 的虚拟主机(较少使用) 基于域名的虚拟主机 基于端口的虚拟主机 二 基于IP虚拟主机 2.1 配置多IP地址 [root@nginx ~]# ifconfig eth0:0 172.2

随机推荐