配置Nginx端口转发时的小问题 - Go语言中文社区

配置Nginx端口转发时的小问题


Nginx是一款高性能Http服务器,其最大的用途是作为负载均衡和反向代理(端口转发)的工具。

一、起因

昨天晚上闲来无事,上了下阿里云发现自己的域名和服务器都还没过期,所以就把自己的域名绑定到服务器地址上,做了一个DNS解析。但是我发现,每次需要访问8888端口时仍需要使用 域名:8888 这种方式访问,所以我想用Nginx做一个反向代理,将默认打开的80端口转发到8080端口中,以实现用域名直接访问8888端口的目的。

二、部署

部署安装都很顺利,对着流程一套做下来,没有太大问题(唯一的问题是服务器的apt版本太老,需要升级:apt -get update)。
之后,进入/etc/nginx后,输入./nginx,启动nginx,这时提示80端口已经被占用(或许是之前安装过nginx没有清理干净),所以这是第一个问题,现在需要杀死nginx的进程:
killall -9 nginx
杀死nginx进程后,再次启动,完成,一切到目前为止还算顺利,在浏览器中直接输入域名即默认打开了80端口,可以看到Nginx的欢迎页:
在这里插入图片描述

三、端口映射

接下来就是最主要的一步:做端口映射。我需要把80端口给映射到8888端口,进入conf文件夹,vi nginx.conf修改端口映射,一开始我将其改为这样:

	server {
        listen       80;

        server_name  127.0.0.1:8888;

        }

然后:wq!退出并保存内容,然后按照以前刷新配置文件的方式一样使用
source conf/nginx.conf加载更新的内容,这时报错:

worker_processes: command not found
Failed to convert URI from command line into object reference. BAD_PARAM (BAD_PARAM_BadSchemeName)
worker_connections: command not found
-bash: nginx.conf: line 17: syntax error near unexpected token `}'
-bash: nginx.conf: line 17: `}'

在这卡了很久,让我一度以为是nginx没有安装完整或者是服务器依赖的问题,所有我重新安装nginx并且重新下载了所有所需依赖,最后发现问题还是存在。最后我找到一篇帖子,里边有人评论说这是nginx的一个bug,不用理会,只要nginx的启动过程不报错就行了,此刻我的内心十分复杂,搞了半天原来是它本身的bug,但是这样也就算解决了吧。

四、暂停/重新启动

由于修改了配置文件,所以必须要重新启动nginx才能让其生效,所以我使用了nginx -s stop命令,之后就算一连串的报错:

 The program 'nginx' can be found in the following packages: 
* nginx-extras 
* nginx-full 
* nginx-light 
Try: apt-get install <selected package> 

所以我又把这些所需的依赖都装了一遍:

 apt-get install nginx-extras  
apt-get install nginx-full  
apt-get install nginx-light 

然后继续使用stop命令将其暂停,继续报错:

nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)

这里也卡了很久,各种百度谷歌都在说需要在哪个哪个目录创建一个nginx文件夹,然后复杂nginx.pid到某个文件夹下,试了一遍还是不行,最后找到解决办法:

直接使用killall -9 nginx杀死nginx进程在使用./nginx启动nginx,配置文件就可以被加载到了。

五、端口映射不起作用

前面的几步都完成后,配置的80端口映射到8888端口仍不起作用,访问域名后仍然打开的80端口,所以我又回到第三步,最后发现不起作用的原因是:
我只配置了server_name,即虚拟主机名,但是却没有配置proxy_pass,即反向代理路径,所以我为server{}中添加以下内容,终于搞定了端口的映射:

server {
        listen       80;

        server_name  127.0.0.1:8888;

        location / {
            proxy_pass   http://127.0.0.1:8888;
        }
}

最后,80端口成功地被映射到本机的8888端口上,Nginx反向代理的端口转发成功了。

总结:从发现问题到解决问题一共花了三个多钟头,其实有许多问题的出现就是因为之前没有遇见过,以及许多问题或许根本不是会造成异常的问题,加上被各路博客的带偏(参考了几十个博客),最后越搞越乱。所以说要解决问题,还是需要发现问题的核心是什么,如何才能迅速发现问题的核心?那就需要多实践,多踩坑才能做到。现在踩的坑,就是以后站住脚的基石。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/pbrlovejava/article/details/86351429
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢