在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) ,执行一下命令

  1. wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

3.建立nginx的yum仓库 暂时还不明白这句话什么意思,但是照做就可以

  1. rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

4.安装nginx 执行下面的命令

  1. yum install nginx

5.启动nginx 服务

  1. 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

  1. vim nginx.conf


3.找到

  1. server {
  2. listen 80;
  3. listen [::]:80;
  4. server_name xxxx.yuming.top;
  5. root /root/wwwroot/webroot;
  6. # Load configuration files for the default server block.
  7. location / {
  8. root /root/wwwroot/webroot
  9. }
  10. include /etc/nginx/default.d/*.conf;
  11. error_page 404 /404.html;
  12. location = /404.html {
  13. }
  14. error_page 500 502 503 504 /50x.html;
  15. location = /50x.html {
  16. }
  17. }

在配置文件中会有多个Server。没一个Server就可以是配置为一个虚拟主机。
步骤3中root和location下的root 后面跟的路径为静态web路径。比如:在 /root/wwwroot/webroot/目录下防止一个a.html。重新启动nginx就可以通过ip地址或者域名访问a.html

3.本人是使用nginx进行反向代理的配置的。上面的server目录要进行修改

  1. server {
  2. listen 80;
  3. listen [::]:80;
  4. server_name www.yourdomainname.top;
  5. root /usr/share/nginx/html;
  6. # Load configuration files for the default server block.
  7. location / {
  8. proxy_pass http://[ip]:[port];
  9. proxy_set_header Host $host;
  10. proxy_set_header X-Real-IP $remote_addr;
  11. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  12. }
  13. include /etc/nginx/default.d/*.conf;
  14. error_page 404 /404.html;
  15. location = /404.html {
  16. }
  17. error_page 500 502 503 504 /50x.html;
  18. location = /50x.html {
  19. }
  20. }

上面的反向代理,其实修改依据就可以了。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服务器。

配置中下面几行就是解决这个问题的。

  1. proxy_set_header Host $host;
  2. proxy_set_header X-Real-IP $remote_addr;
  3. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

上面的操作完成后,重新启动nginx服务一般就可以了。
但是本人在操作过程中,遇到了不成功的问题。
网站打开提示无法连接

1.将nginx.conf文件中第一行 user 修改为 root 解决了网站不能访问的问题。

2021-07-19 22:40:19  user 阅读(150) 评论(0) 标签:nginx,nginx安装,反向代理配置 分类:随笔/杂项