一, 思考过程
如果不想带上端口号, 就只能访问 80 或 443 端口.
可以用过二级目录区分服务, 通过反向代理转发到不同的 Server.
可以用过子域名区分服务, 通过反向代理转发到不同的 Server.
二, 方案评估
对于不带端口号访问, 以我目前的经验来看, 找不到其它更好的方法, 只能使用 80 或 443 端口.
使用二级目录区分服务, 可行性很大.
能通过二级目录名, 明确区分服务.
可是和直接使用端口号差别不大, 只是把辨别服务的方法, 从端口号变成了二级目录名.
可能导致 url 过长.
还是没有什么美观性.
使用子域名区分服务, 可行性与二级目录相差无几.
能通过子域名, 明确区分服务.
具有一定的美观性.
三, 实践操作
使用子域名区分服务 的方式, 然后使用 nginx 做反向代理, 分发到不同的端口.
1, 找到 nginx 的配置文件
打开 nginx 的配置文件, 打开 / 安装路径 / conf/nginx.conf, 进行配置
2, 修改配置
- server {
- listen 80;
- server_name *.abc.com;
- if ($http_host ~* "^(.*?)\.abc\.com$") { #正则表达式
- set $domain $1; #设置变量
- }
- location / {
- if ($domain ~* "shop") {
- proxy_pass http://abc.com:3001; #域名中有 shop, 转发到 3001 端口
- }
- if ($domain ~* "mail") {
- proxy_pass http://abc.com:3002; #域名中有 mail, 转发到 3002 端口
- }
- tcp_nodelay on;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- #以上三行, 目的是将代理服务器收到的用户的信息传到真实服务器上
- root html;
- index index.HTML index.htm; #默认情况
- }
- }
来源: http://www.bubuko.com/infodetail-3338661.html