在center os上安装nginx,并且配置反向代理
工作多年,总感觉跟着工作在走,工作中需要什么就做些什么,工作需要什么,就去学习什么,随着中年危机越来越近,自己也在反思,是不是可以将自己工作过程中遇到的问题,记录下来,不管是同行交流,还是算做自己的笔记方便以后查阅,纵然水平有限,聊以自慰也好。于是近来,申请了一个域名,做了一个博客。
记录一下,网站发布过程中nginx的安装和配置。服务器使用阿里云的ECS,网站的开发使用beego框架,后端语言node的express框架也算熟悉,但是好久没有用,go也正在学习。于是选择了beego。
使用beego服务器后,服务很快起来了。博客也做好了。但是发布的时候在想是直接beego启动还是使用http服务器想 nginx,apache等。由于工作需要,还需要发布一些web应用,做一些h5的课件展示。最终选择使用nginx来做http服务器,同时发布多个虚拟主机。下面先看看怎么在centeros上安装nginx。
1.连接远程服务器,本人使用secureCRT工具。进入服务器后,新建一个目录 mkdir nginx ,将nginx的安装文件下载到nginx目录 cd nginx 进入到对应的目录
2.下载对应当前系统版本的nginx包(package) ,执行一下命令
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3.建立nginx的yum仓库 暂时还不明白这句话什么意思,但是照做就可以
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
4.安装nginx 执行下面的命令
yum install nginx
5.启动nginx 服务
systemctl start nginx 启动nginx 服务
执行上面的5个步骤,一般就能正确的安装 nginx 本人在安装过程中没有出现什么问题。
下面说一下怎么配置nginx的反向代理,基于go语言的beego框架,本身就具备启动http服务器的能力。为什么还要用nginx上面已经说过。那请求到nginx后怎么分发到 beego 中的http服务器就需要nginx配置一个反向代理
下面是nginx方向代理的配置方法
1.进入 /etc/nginx/目录下。能看到目录下有nginx.conf文件。该文件为nginx的配置文件。
2.使用vim打开nginx.conf
vim nginx.conf
3.找到
server {
listen 80;
listen [::]:80;
server_name xxxx.yuming.top;
root /root/wwwroot/webroot;
# Load configuration files for the default server block.
location / {
root /root/wwwroot/webroot
}
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
在配置文件中会有多个Server。没一个Server就可以是配置为一个虚拟主机。
步骤3中root和location下的root 后面跟的路径为静态web路径。比如:在 /root/wwwroot/webroot/目录下防止一个a.html。重新启动nginx就可以通过ip地址或者域名访问a.html
3.本人是使用nginx进行反向代理的配置的。上面的server目录要进行修改
server {
listen 80;
listen [::]:80;
server_name www.yourdomainname.top;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
location / {
proxy_pass http://[ip]:[port];
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
上面的反向代理,其实修改依据就可以了。location 下的proxy_pass 修改成为beego监听的服务器地址和端口就可以了。
proxy_pass 下面的 proxy_set_heaader、$proxy_add_x_forwarded_for 的作用如下。
web服务器本身使用的是beego框架,进行了ip地址的统计。如果不使用nginx代理那是没有问题的。但是使用了nginx代理。beego获取到的请求地址就都变成了本机低级,原因就是nginx进行了代理。
- 用户访问的是nginx服务器。
- 但是对于beego来说,方位都是从nginx来的。因为它统计到的地址就都是本机了
为了解决上面这个问题。代理服务器在转发的时候使用proxy_set_header将更多的信息转发给beego服务器。
配置中下面几行就是解决这个问题的。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
上面的操作完成后,重新启动nginx服务一般就可以了。
但是本人在操作过程中,遇到了不成功的问题。
网站打开提示无法连接
1.将nginx.conf文件中第一行 user 修改为 root 解决了网站不能访问的问题。