天天看點

centos 查找nginx_超詳細!在Centos上搭建Nginx反向代理!

前言

上一篇文章 MeCC:第一次用虛拟機如何配置網絡連接配接 介紹了如何在虛拟機中安裝Centos系統并配置網絡,現在網絡已經通了,讓我們開心愉快的進行下一步吧,搭建nginx反向代理,讓其他主機可以通路到我們的頁面~

吐血推薦:在搭建Nginx中可能遇見的問題,或許可以通過這些方式解決!

為什麼在一開頭就說這個問題,因為我真的是踩了N個坑,腦殼都要扣痛了,希望能夠幫助遇到類似問題的同學們!在完成後面文章Step2的操作後,可能你發現還是沒法通路位址,可能的原因包括nginx沒有正常啟動,或者防火牆攔截了請求,以下的方法可以嘗試下:

1. 重新開機Centos

reboot

2. 開啟Nginx服務

systemctl start nginx

3. 關閉防火牆 & 禁止開機啟動

systemctl stop firewalld.service

systemctl disable firewalld.service

4. 關閉SELinux服務,這個服務可能會阻止你向特定端口轉發,在之後設定反向代理時因為這個問題困擾了我很久!!進入到/etc/selinux/config檔案,将SELINUX=enforcing改為SELINUX=disabled,别忘了 :wq 進行儲存,Linux基本操作指令我就不贅述啦~

vi /etc/selinux/config

放在這裡着重強調下,給需要的同學,下面開始進入正題,哈哈哈哈哈~

Nginx是什麼

Nginx是一款輕量級的Web伺服器、反向代理伺服器,由于它的記憶體占用少,啟動極快,高并發能力強,在網際網路項目中廣泛應用。

centos 查找nginx_超詳細!在Centos上搭建Nginx反向代理!

上圖基本上說明了當下流行的技術架構,其中Nginx有點入口網關的味道。

正向代理和反向代理正向代理

舉個例子:由于防火牆的原因,我們并不能直接通路谷歌,那麼我們可以借助VPN來實作,這就是一個簡單的正向代理的例子。這裡你能夠發現,正向代理“代理”的是用戶端,而且用戶端是知道目标的,而目标是不知道用戶端是通過VPN通路的。

centos 查找nginx_超詳細!在Centos上搭建Nginx反向代理!

反向代理

概念:當我們有一個伺服器叢集,并且伺服器叢集中的每台伺服器的内容一樣的時候,同樣我們要直接從個人電腦通路到伺服器叢集伺服器的時候無法通路,必須通過第三方伺服器才能通路叢集。這個時候,我們通過第三方伺服器通路伺服器叢集的内容,但是我們并不知道是哪一台伺服器提供的内容,此種代理方式稱為反向代理

舉個例子:當我們在外網通路百度的時候,其實會進行一個轉發,代理到内網去,這就是所謂的反向代理,即反向代理“代理”的是伺服器端,而且這一個過程對于用戶端而言是透明的。

centos 查找nginx_超詳細!在Centos上搭建Nginx反向代理!

安裝Nginx軟體

1. 安裝EPEL軟體倉庫支援

yum install -y epel-release

2. 安裝Nginx軟體包

yum install -y nginx

3. 啟動Nginx服務

systemctl start nginx.service

4. 檢視Nginx服務是否已啟動:

ps -ef | grep nginx

5. 關閉防火牆

systemctl stop firewalld.service

如果一切正常,此時就可以打開浏覽器看了,預設監聽80端口~

centos 查找nginx_超詳細!在Centos上搭建Nginx反向代理!

配置Nginx

檢視Nginx配置檔案nginx.conf

vi /etc/nginx/nginx.conf

檢查是否有如下語句

include /etc/nginx/conf.d/*.conf;

如果存在,說明nginx的配置檔案均設定在conf.d檔案夾下,我們進入到conf.d檔案夾

cd /etc/nginx/conf.d/

在 conf.d 目錄下建立一個站點的配置檔案,例如:test.com.conf:

vi test.com.conf

配置内容這樣設定(按Insert鍵進入編輯模式):

server {

# 監聽80端口 listen 80;

# 伺服器名稱(随意) server_name www.test.com test.com;

# 路由比對 location / {

# 檔案目錄,即你存放靜态資源的地方 root /usr/share/nginx/test.com;

# 設定首頁為根目錄下index.html檔案 index index.html;

}

}

寫好後,按ESC鍵退出編輯模式,輸入 :wq 儲存并退出編輯

:wq

檢查配置檔案是否有誤,不要忘了加分号哦!

nginx -t

重新開機Nginx服務

systemctl start nginx

接着我們将靜态資源存放在我們定義的 /usr/share/nginx/http://test.com 目錄下,這裡我們僅做測試,于是在該目錄下建立一個測試網頁index.html檔案。傳輸檔案的方式有很多,簡單點的可以用XFtp軟體,圖形化界面直接拖拽,詳情見我的文章 MeCC:超詳細!阿裡雲伺服器ECS建站指南!

正常情況下,就可以通過通路IP位址的方式通路到網頁了,如果你使用http://test.com進行通路,記得設定下本地的host檔案

設定反向代理

可能你的項目中會遇到,你請求的伺服器位址并不在你的本機上,需要向另一台主機上去請求,這時可以修改我們之前的test.com.conf檔案:

server {

listen 80;

server_name www.test.com test.com;

# 接口字首為/api/的所有請求都将轉發至目标伺服器,并重寫請求,不再包含/api/ location /api/ {

proxy_pass http://10.10.10.10:666/;

}

location / {

# 檔案目錄,即你存放靜态資源的地方 root /usr/share/nginx/test.com;

# 設定首頁為根目錄下index.html檔案 index index.html;

# 适配前端路由為history模式 try_files $uri $uri/ /index.html;

}

#error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

}

修改完成後重新加載下nginx配置

nginx -s reload

大功告成!去檢視你的頁面吧!如果遇到了問題,請參考本文開頭!

歡迎收看我的其他文章:

本文參考文章: