前言: 在阿里云部署nodejs项目 中我使用了80端口, 在阿里云部署express项目 我使用了3000端口. 浏览器HTTP访问IP或域名的80端口时,可以省略80端口号,但其他端口却不能. 我想省略3000端口则需要使用到nginx反代理服务器
环境: centos7.3
访问阿里云网站并登录
单击控制台–>域名与网站(万网)–>云解析DNS –>域名解析–>域名解析列表 –> 对应域名的 解析设置
解析设置
单击[添加解析]按钮
记录值为公网IP ,主机记录随便写,这里写的是demo,到时候要解析的二级域名就是 http://demo.example.com (example为你的域名主体)
测试域名
window环境下,运行cmd 使用ping http://demo.example.com 检测域名是否解析成功
nginx 中文文档
使用大黄更新与修改命令 yum 来安装相关库,这些都是 nginx 所需要的
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
去 http://nginx.org/download/ 这个网址找一个你想安装的nginx版本,单击右键复制连接 .我这里选的是2017版
切换当前工作目录到/usr/local/src/
wget http://nginx.org/download/nginx-1.11.13.tar.gz #下载2017版
tar -zxvf nginx-1.11.13.tar.gz #解压
mv nginx-1.11.13.tar.gz nginx #改文件名
./configure --prefix=/usr/local/webserver/nginx #安装前的配置
#--prefix 是配置安装路径,最好不要和之前的解压路径一样 ,
#相关路径里面没有的文件夹可以自己提前建好
#配置选项有很多,可以百度nginx配置详解,这里我选择只配置安装路径
#其他的配置选项等要用到的时候再去了解
make && make install #编译 并安装
切换当前工作目录到 /usr/local/webserver/nginx
./sbin/nginx -t
测试通过会提示配置文件的语法没有错误,配置文件的测试成功
如果端口被占用,则杀死相关进程
netstat -ano | grep 80
netstat -ntlp | grep 80
/usr/local/webserver/nginx/sbin/nginx
/usr/local/webserver/nginx/sbin/nginx -s reload
ps -ef | grep nginx #查找nginx 服务的进程id
kill -9 相关pid
cd /lib/systemd/system #切换当前工作目录
vi nginx.service #新建nginx.service文档
将以下内容粘到到文档中,然后按esc键,再:wq.(注意对应滴修改地址呦)
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/webserver/nginx/sbin/nginx
ExecReload=/usr/local/webserver/nginx/sbin/nginx -s reload
ExecStop=/usr/local/webserver/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
然后!
启动nginx服务
systemctl start nginx
#未修改 nginx.conf文件之前,
#通过域名访问到的是nginx服务默认的一个index.html页面
停止nginx服务
systemctl stop nginx
重新启动服务
systemctl restart nginx
设置开机自启动
systemctl enable nginx
停止开机自启动
systemctl disable nginx
查看服务当前状态
systemctl status nginx
查找nginx.conf文件
find / -name nginx.conf #找到nginx.conf文件所在位置
切换工作目录到查找到的路径中,使用vi 修改 nginx.conf文件
http{
...
...
#主机配置
server {
listen 80; #监听的端口
server_name demo.example.com; #来访的域名
#charset koi8-r;
#access_log logs/host.access.log main;
#修改反向代理地址
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://127.0.0.1:3000; #实际提供http内容服务的地址
proxy_redirect default;
# root html; #根目录
#index index.html index.htm; #首页页面
}
}
...
...
}
配置成功后,删除阿里云服务器安全组里相关3000端口的安全组规则
启动express应用,此时服务器本地可以访问express应用,外网无法访问
重启nginx服务,通过demo.example.com访问,可访问到express应用
通过阿里云配置多个二级域名, 或者是不同的顶级域名指向同一个公网IP,
服务器端提供多个http服务监听不同的端口,或者提供不同的文件目录,
使用nginx 进行对应配置就可以实现多站点了