我们使用多个域名指定到nginx集群上,然后通过域名的请求分发到不同的服务器上,再分布式中使用的相对较多,下面看实验的要求,我已经把两个域名同时绑定到同一个IP上了,并且在nginx中已经做了限制,主要限制的是针对那些自己把域名绑定到我的IP上的域名,这些域名虽然不会影响到我的服务,但是对于搜索引擎会产出一些影响,所以就限制了一下,只有我在nginx指定的域名绑定到我的IP访问才会正常,其他的都返回502.也做了禁止IP访问等策略。使用分布式的目的是针对项目中有多个关联的小项目的连接,一是简单,二是方便处理,三是便于管理。
实验简介
需要通过www.wulaoer.org和一个二级域名gitbook.wulaoer.org同时绑定到同一个公网IP,并把两个域名的请求发送到相应的服务上。这里域名已经绑定好了,我就使用线上的数据做个例子,现在www.wulaoer.org域名可以正常方位,下面要实现的就是把gitbook.wulaoer.org域名也能正常访问即可。先进入nginx
[root@wulaoer ~]# cd /usr/local/nginx/conf/ [root@wulaoer conf]# ls enable-php.conf example fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf-20191205 nginx.conf_ghttp pathinfo.conf scgi_params uwsgi_params vhost enable-php-pathinfo.conf fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf nginx.conf.default nginx.conf_ssl rewrite scgi_params.default uwsgi_params.default win-utf
我的nginx.conf配置文件中有一条指定vhost目录的配置信息。
access_log /home/wwwlogs/access.log; include vhost/*.conf; } [root@wulaoer conf]#
我们在vhost目录下创建一个新的nginx配置信息,这里不和nginx.conf冲突,不过格式必须是以.conf格式结尾。下面是我创建的一个二级域名的配置信息。
[root@wulaoer vhost]# cat gitbook.conf 
upstream gitbook.wulaoer.org {
    server localhost:4082;   #这里就是我另一个程序的入口,只是在本地使用
}
server {
    listen       80;
    server_name  gitbook.wulaoer.org;
    location / {
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_pass http://gitbook.wulaoer.org;
    }
}
这是反向代理到指定的服务上,然后调用指定服务的IP+端口,upstream后面的字符串一定要和proxy_pass后面的http://字符串一致,如果两个域名都是本地的php文件就不需要使用upstream模块了,直接指定路径即可:
[root@wulaoer vhost]# cat gitbook.conf 
server
    {
        listen 80;
        server_name gitbook.wulaoer.org;
        index index.html index.htm index.php;
        root  /home/wwwroot/wordpress;  #网站路径
        include enable-php.conf;
        location /nginx_status
        {
            stub_status on;
            access_log   off;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
        location ~ /.well-known {
            allow all;
        }
        location ~ /\.
        {
            deny all;
        }
        access_log  /home/wwwlogs/access_wo.log;#域名的访问日志
    }
也可以在上面针对不同的服务配置不同的日志文件以便区分。配置好之后,需要重启一下nginx或者重新加载一下
验证
服务配置好了就需要验证一下,先验证不使用upstream模块的反向代理。我在两个域名的网站路径下做了区分:
[root@wulaoer vhost]# echo "这个页面的域名是www.wulaoer.org" > /home/wwwroot/default/index.html [root@wulaoer vhost]# echo "这个页面的域名是gitbook.wulaoer.org" > /home/wwwroot/wordpress/index.html
验证一下访问的内容:
[root@wulaoer vhost]# curl www.wulaoer.org 这个页面的域名是www.wulaoer.org [root@wulaoer vhost]# curl gitbook.wulaoer.org 这个页面的域名是gitbook.wulaoer.org
反向代理的验证是我在自己的真实机上操作的,可以自己点击一下,域名也是一样分别是www.wulaoer.org和gitbook.wulaoer.org,不过这里的内容有些私密,所以我想加点权限上去,访问的时候需要输入用户名和密码,因为我不想我所有的东西都被人看到,所以需要设置一下。nginx权限需要用到htpasswd工具,我安装一下。
[root@wulaoer ~]# yum -y install httpd-tools
创建登录的用户和密码
[root@wulaoer ~]# mkdir /usr/local/src/nginx [root@wulaoer ~]# htpasswd -c /usr/local/src/nginx/passwd wulaoer New password: Re-type new password: Adding password for user wulaoer root@wulaoer ~]# cat /usr/local/src/nginx/passwd wulaoer:***************************************
创建用户的密码路径没有nginx目录所以手动创建了一个,如果创建的密码忘记了重复创建即可,相当于修改密码了。创建了用户名密码,那就添加到需要权限的nginx里,我这里两个域名的nginx,只在gitbook.wulaoer.org域名中增加权限,主域名www.wulaoer.org不增加权限了。
[root@wulaoer ~]# cd /usr/local/nginx/conf/vhost/
[root@wulaoer vhost]# vi gitbook.conf 
upstream gitbook.wulaoer.org {
    server localhost:4082;
}
server {
    listen       80;
    server_name  gitbook.wulaoer.org;
    auth_basic "Please input password";  #
    auth_basic_user_file /usr/local/src/nginx/passwd;
    location / {
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_pass http://gitbook.wulaoer.org;
    }
}
重启一下nginx,在访问的时候就需要验证用户名和密码了。这里的验证主要是针对不想对外开放的内容,有用户和密码即可访问。

您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏