年初的时候搭建了一个rtmp 的视频推拉流,现在要从新搭建一个实现转发的nginx ,因为我有一个阿里云,我想跑两个项目,但是我只有一个域名,思来想去,就决定用nginx 使用域名的默认80 端口号,然后用不同的路径去区别转发到相应的端口,实现这个需求。
从网上也整理了很多资料,也是浑水摸鱼的,好在已经有一次安装经验了,但是这次还是感觉到很吃力,网上的不同版本的都看起来都实现了,但是自己就是搭建不出来。很难受。
首先第一步肯定就是日常的配置端网络什么的,我用的一个虚拟机是已经配置好静态ip 以及一个jdk 1.8 的节点。并且我准备了两个项目demo 的jar 文件。
1. 第一步
yum -y update
首先就是把自己的yum 更新到最新版。
2. 第二步就是安装nginx 编译所需要的依赖。一步到位
yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel
3. 开始安装nginx 我们可以用centos 自带的wegt 来下载nginx 的tar.gz 包,首先创建一个 nginx 的文件夹,然后再进去这个文件夹。
mkdir -p /usr/local/nginx
// 进入创建的nginx 文件夹
cd /usr/local/nginx
wget http://nginx.org/download/nginx-1.9.15.tar.gz
然后我的节点提示我没有安装这个wegt 的命令
然后我们进行一下安装
yum -y install wget // -y 的意思是默认安装所有的组件
wget http://nginx.org/download/nginx-1.9.15.tar.gz
tar -zxvf nginx-1.9.15.tar.gz
cd cd nginx-1.9.15
进入nginx 的解压文件夹
4. 选择安装的模块
nginx有很多模块
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-pcre \
--with-file-aio \
--with-http_realip_module \
--without-http_scgi_module \
--without-http_uwsgi_module \
--without-http_fastcgi_module
完成以后会提示这样的信息, 表示我们的这些东西已经配置好了。
5. 编译 安装
make
make install
/usr/sbin/nginx
可以看到nginx 已经启动成功了。
另外还有其他nginx 的常用命令
//重启
/usr/sbin/nginx -s stop/ quit/ reload
理所应当停止就是
/usr/sbin/nginx -s stop
7. 配置转发
限制nginx 就成功安装完成了。然后就是要配置端口转发,才能实现我的一个域名好几个项目使用.
停掉nginx
/usr/sbin/nginx -s stop
然后就是配置我们的转发请求了。进入我们的nginx 解压目录的conf 配置文件夹内
cd /usr/local/nginx/nginx-1.9.15/conf
vi /etc/nginx/nginx.conf
找到service 然后放入底下代码
location ^~ /wechat {
proxy_pass http://localhost:8081;
proxy_set_header X-Real-IP $remote_addr; #地址追加
}
location ~ / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host:8080; // 重定向以后指定端口改为8080 而不是默认的80 80 已经被nginx使用了。
proxy_set_header X-Real-IP $remote_addr; #地址追加
}
8. 然后到这里我的就配置好了。然后配置的过程我碰到一个问题,就是后台 springboot 去重定向的时候,会找不到地址,然后我就加上了 proxy_set_header Host $host:8080 才实现的重定向,因为重定向以后又默认启动了80 端口,然后导致找不到路径。