关于某视频里leyou商城通过虚拟机的nginx反向代理访问本机后台管理系统的问题汇总
之前没用过虚拟机,更没接触过linux,视频中老师通过虚拟机的nginx反向代理来实现不同ip间的访问,早在Oracle数据库学习的过程中,就曾经用虚拟机作为不同服务器访问的实现,当时因为win10的ios镜像文件过大的问题作罢。这次视频中所用的虚拟机是mac里的,本来准备本机操作nginx算了,又觉得遇到问题就应该去接受挑战,而不是跳过,结果这一下午加一晚上都耗在了这上面~~下面就是一些困扰我或多或少的问题,希望对大家有所帮助。
一、下载及安装虚拟机VMware
首先我们访问官网地址https://www.vmware.com/cn.html.
注意:没有账号必须先注册才能下载。注册页面https://my.vmware.com/cn/web/vmware/registration.
(这网站很卡,实在进不去的就第三方下载吧)
这个过程我没遇到什么问题,具体的教程可以看这个链接: https://blog.csdn.net/hao5119266/article/details/89198275.
成功界面如图所示:
二、创建一个新的虚拟机
之前就是因为装win10失败作罢,这次有哥们和我说可以用下Ubuntu。
这个过程我没遇到什么问题,具体的教程可以看这个链接: https://blog.csdn.net/nanfeibuyi/article/details/81162947.
成功界面如图所示:
三、在虚拟机里安装及配置nginx
建议之前没接触过Linux系统的先熟悉下- -,如果安装了VMware Tools还好一点,可以直接点界面,不然切换虚拟机和本机(Ctrl+Alt)挺蛋疼的。还有一些其他的例如开启终端(Ctrl+Alt+T)、开启目录(cd /路径)、显示目录下文件(ls 目录)等等。
1、安装nginx
安装nginx有两种办法:一种是基于APT源安装,另一种是通过源码包编译安装。
具体操作的连接如下:https://www.cnblogs.com/EasonJim/p/7806879.html.
我选择的是第一种方法,选择第二个的同学也可以通过VMware Tools的共享文件夹功能从本机拷贝源码包然后安装。
基于APT安装后的nginx文件存放路径是固定的,我就是因为找不到文件夹苦苦搜寻了好久- -。例如nginx.conf文件的路径为 /etc/nginx/nginx.conf。刚开始我是这么找的:
实际上应该这样:
不过配置的时候可以直接终端里输入路径修改。
安装遇到的问题就是找文件。。。
还有就是安装完成后可以在终端输入: nginx -v 来检测版本以及是否安装成功。
nginx常用命令:
验证配置是否正确: nginx -t
查看Nginx的版本号:nginx -v
启动Nginx:start nginx
快速停止或关闭Nginx:nginx -s stop
正常停止或关闭Nginx:nginx -s quit
配置文件修改重装载命令:nginx -s reload
启动成功的界面:
2、配置nginx
这就是个坑了。。。
因为和视频中的mac系统与虚拟机的类型都与我不一致,所以只能上网找。看了好多大佬的文章,基本上分为两种:1、通过路径 /etc/nginx/conf.d/ 创建新的配置文件,里面写入所需的内容。2、通过路径 /etc/nginx/nging.conf 直接在其中加入内容。我是用的第二种方式。
(附上第一种方式的连接:https://www.cnblogs.com/gede/p/11011693.html.)
步骤如下:
1)找到该文件并打开( /etc/nginx/nging.conf )
因为我装的是简单版本,所有很多application都没有,你可以安装其他的读写应用来操作。当你在文档里修改并保存时会发现如下提示:
这是因为没有权限修改,所以我们要用到终端去处理。
2)使用终端修改权限
具体操作连接如下:https://blog.csdn.net/zyj20200/article/details/81660805.
或者用下图的方式:
先输入: sudo su 回车
然后输入你的密码(输入的时候不显示,输入完按回车即可)。接下来就以root权限来访问了。
3)使用终端打开nginx.conf
在root权限下输入:vim /etc/nginx/nginx.conf 回车
如果没有安装vim的同学会出现如下提示 :-bash: vim: command not found
在命令行输入:sudo apt-get install vim-gtk
然后输入:y 回车
之后再输入:vim /etc/nginx/nginx.conf 回车
进入到nginx.conf配置文件如下图所示:
4)修改配置文件nginx.conf
具体的每项含义及作用详解请看这个:https://www.cnblogs.com/phpdragon/archive/2013/08/09/3248373.html.
我们需要在http这个括号范围里加入自己所需的配置文件:
1.单域名映射到多服务
server {
listen xx;
server_name www.xxxx.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location /xxx/ {
proxy_pass http://192.168.xxx.xx:xxxx/;
}
location /xx/ {
proxy_pass http://192.168.xxx.xx:xxxx/;
}
location /x/ {
proxy_pass http://192.168.xxx.xx:xxxx/;
}
location / {
proxy_pass http://192.168.xxx.xx:xxxx/;
}
}
2.多域名映射到多服务
server {
listen xx;
server_name www.xxx.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://192.168.xx.xx:xxxx/;
}
}
server {
listen xx;
server_name www.xxxx.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://192.168.xxx.xxx:xxxx/;
}
}
具体的参数根据需求来指定。
还要提一下在终端里修改文件要注意的一些事情:
具体的看这个链接:https://blog.csdn.net/mirrorming/article/details/80940511.
5)重启nginx
保存后退出编辑界面,在终端里输入:sudo nginx -s reload
以上就是在虚拟机中需要操作的内容。
四、在本机中通过虚拟机的nginx实现反向代理
1)配置本机hosts文件
其实之前在虚拟机中应该先查出ip地址,操作如下:
打开终端,输入:ifconfig -a 回车
若是报找不到ifconfig说明还未安装,先输入:sudo apt-get install net-tools 安装net-tools工具。
然后再输入:ifconfig -a 回车
如图所示的就是虚拟机的ip地址:
我用的是视频里推荐的工具来进行修改,如下图所示:
2)在本机中访问manage.leyou.com
关于后台管理系统相关的项目工程这儿就不做过多的赘述,访问结果如下图所示:
在这个过程中还有许多其他的问题发生,有些是因为自己太蠢,有些是自己的思路问题,以上便是实现功能的整个操作~