Nginx配置虚拟主机实战

前言: 本文主要介绍nginx配置虚拟主机。

一>Nginx模块介绍及目录结构

1>Nginx整体目录结构

image.png

[root@lll nginx]# tree

├── client_body_temp       ------客户端内容的临时文件

├── conf                            -------nginx所有配置文件目录(每一个配置文件都有一个默认的备份文件,最核心的配置文件是nginx.conf)

│    ├── fastcgi.conf

│    ├── fastcgi.conf.default

│    ├── fastcgi_params

│    ├── fastcgi_params.default

│    ├── koi-utf

│    ├── koi-win

│    ├── mime.types

│    ├── mime.types.default

│    ├── nginx.conf

│    ├── nginx.conf.default

│    ├── scgi_params

│    ├── scgi_params.default

│    ├── uwsgi_params

│    ├── uwsgi_params.default

│    └── win-utf

├── fastcgi_temp             -------fastcgi_temp临时文件

├── html                          -------默认站点目录(包括首页文件和错误页面优雅替代文件)

│    ├── 50x.html

│    └── index.html

├── logs                          --------日志文件目录(包括错误日志和访问日志)

│    ├── access.log

│    ├── error.log

│    └── nginx.pid

├── proxy_temp              -------代理临时文件

├── sbin                          -------sbin目录下面为nginx启动文件

│    └── nginx

├── scgi_temp                -------scgi临时文件

└── uwsgi_temp             -------uwsgi临时文件

2>Nginx主配置文件nginx.conf

    Nginx的配置文件是一个纯文本文件,它位于Nginx的安装目录的conf目录下,整个配置文件是以块的形式组织的。整个配置文件中Main指令位于最高层,在Main层下面有Events,Http等层级,而在http层中又包含有Server层,Server层里面又包含有location层(并且一个Server层里面可以有多个location层)。

#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  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;


    sendfile        on;

    #tcp_nopush     on;


    #keepalive_timeout  0;

    keepalive_timeout  65;


    #gzip  on;


    server {

        listen       80;

        server_name  localhost;


        #charset koi8-r;


        #access_log  logs/host.access.log  main;


        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.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;

        #}


        # 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 ssl;

    #    server_name  localhost;


    #    ssl_certificate      cert.pem;

    #    ssl_certificate_key  cert.key;


    #    ssl_session_cache    shared:SSL:1m;

    #    ssl_session_timeout  5m;


    #    ssl_ciphers  HIGH:!aNULL:!MD5;

    #    ssl_prefer_server_ciphers  on;


    #    location / {

    #        root   html;

    #        index  index.html index.htm;

    #    }

    #}


}


3>Nginx配置虚拟主机

A>基于域名的虚拟主机(应用外部网站)


第一步,nginx.conf修改配置:

 server {

        listen       80;

        server_name  www.etiantian.org;


        #charset koi8-r;


        #access_log  logs/host.access.log  main;


        location / {

            root   html/www;

            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.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;

        #}


        # deny access to .htaccess files, if Apache's document root

        # concurs with nginx's one

        #

        #location ~ /\.ht {

        #    deny  all;

        #}

    }

server {

        listen       80;

        server_name  bbs.etiantian.org;


        #charset koi8-r;


        #access_log  logs/host.access.log  main;


        location / {

            root   html/bbs;

            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.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;

        #}


        # deny access to .htaccess files, if Apache's document root

        # concurs with nginx's one

        #

        #location ~ /\.ht {

        #    deny  all;

        #}

    }

server {

        listen       80;

        server_name  blog.etiantian.org;


        #charset koi8-r;


        #access_log  logs/host.access.log  main;


        location / {

            root   html/blog;

            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.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;

        #}


        # deny access to .htaccess files, if Apache's document root

        # concurs with nginx's one

        #

        #location ~ /\.ht {

        #    deny  all;

        #}

    }

第二 步,循环创建站点目录及首页

[root@lll conf]# mkdir ../html/{www,blog,bbs}

[root@lll conf]# for n in www blog bbs;do echo "$n.etiantian.org" > ../html/$n/index.html;done

[root@lll conf]# for n in www blog bbs;do cat ../html/$n/index.html;done

www.etiantian.org

blog.etiantian.org

bbs.etiantian.org

第三步,检查语法并重启

[root@lll conf]# ../sbin/nginx -t

nginx: the configuration file /application/nginx-1.6.2/conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.6.2/conf/nginx.conf test is successful

[root@lll conf]# ../sbin/nginx -s reload

第四步 在宿主机的hosts文件中给虚拟主机做解析

image.png

image.png

第五步 测试

image.png

总结(配置虚拟主机流程):

    1>复制一个完整的server标签段到结尾(要放在http标签里面)。

    2>更改server_name及对应的根目录。

    3>检查配置文件语法,平滑重启服务。

    4>创建server_name对应网页的根目录,并且建立根目录,如果没有index首页会出现403。

    5>在客户端对server_name的主机名做hosts解析或dns设置,并检查。

    6>在客户端浏览器访问测试。













猜你喜欢

转载自blog.51cto.com/11218855/2166228