zoukankan      html  css  js  c++  java
  • 利用nginx 虚拟主机、请求转发实现不同端口web访问

    一个服务器上挂一个网站实在是有点浪费;一个服务器上可以放多个网站;可以开启nginx的虚拟主机功能;利用访问的路径或者域名不同访问不同的文件夹;例如:

    1、一台服务器上放多个网站使用nginx的配置文件

    这是一个网站的配置文件;

        server {
            listen       80;
            server_name  localhost;
            root    /usr/share/nginx/html;
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                index  index.html index.htm index.php;
            }
    
            #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  $document_root$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;
            #}
        }

    其中核心配置:配置成如下的形式;即可多个网站通过不同的域名进行访问。原理是通过访问的host 将对应的服务器目录返回。

    server {
            listen       80;
            server_name  a.com;//你的域名 ;
            root    /usr/share/nginx/html;
           }
    
    server {
            listen       80;
            server_name  b.com;//二级域名;
            root    /usr/share/nginx/htmlb;//不同目录
           }

    2、要是第二个网站的端口监听的是非80端口;例如gitbook的4000端口;就需要将请求进行转发;原理是通过不同的域名判断将请求进行转发;不仅要开启虚拟主机还需要将对应的虚拟主机请求转发。配置如下:

    
    
    server {
            listen       80;
            server_name  a.com;//你的域名 ;
            root    /usr/share/nginx/html;
           }

    server { server_name b.com;//对应的域名 listen
    80; location / { proxy_pass http://127.0.0.1:4000; } }

    这是配置端口转发的核心。

    3、重启nginx

    service nginx restart

    访问a.com 对应预配置的文件路径;访问b.com 会将请求转发到4000端口。配置完成后有两种方式可以访问到目录;

    第一种可以直接使用域名进行访问 b.com ;这种方式默认使用http协议 80端口进行访问;在服务器端首先会判断来访的域名;由对应的虚拟主机处理后将请求转发到4000端口;

    第二种是通过a.com:4000 (或者b.com:4000 因为a,b域名解析的IP地址是相同的)进行访问;这种方式直接使用4000端口的监听程序进行处理请求,并返回数据。

  • 相关阅读:
    跳出iframe
    leetcode 225. Implement Stack using Queues
    leetcode 206. Reverse Linked List
    leetcode 205. Isomorphic Strings
    leetcode 203. Remove Linked List Elements
    leetcode 198. House Robber
    leetcode 190. Reverse Bits
    leetcode leetcode 783. Minimum Distance Between BST Nodes
    leetcode 202. Happy Number
    leetcode 389. Find the Difference
  • 原文地址:https://www.cnblogs.com/engeng/p/8136185.html
Copyright © 2011-2022 走看看