配置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加載更新的內容,這時報錯:
在這卡了很久,讓我一度以為是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{}中添加以下內容,終于搞定了端口的映射:
最后,80端口成功地被映射到本機的8888端口上,Nginx反向代理的端口轉發成功了。
總結:從發現問題到解決問題一共花了三個多鐘頭,其實有許多問題的出現就是因為之前沒有遇見過,以及許多問題或許根本不是會造成異常的問題,加上被各路博客的帶偏(參考了幾十個博客),最后越搞越亂。所以說要解決問題,還是需要發現問題的核心是什么,如何才能迅速發現問題的核心?那就需要多實踐,多踩坑才能做到。現在踩的坑,就是以后站住腳的基石。
總結
以上是生活随笔為你收集整理的配置Nginx端口转发时的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成功 自信 快乐, ――给中国青年学生的
- 下一篇: Nginx请求转发端口转发