我们使用多个域名指定到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,在访问的时候就需要验证用户名和密码了。这里的验证主要是针对不想对外开放的内容,有用户和密码即可访问。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏