C++日誌庫-spdLog
安裝 Nginx
1. nginx 安裝環境
nginx 是 C 語言開發,建議在 linux 上執行
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
2.將 Nginx 安裝包上傳到 Linux 中
3.解壓安裝包:
tar -zxvf nginx-1.8.1.tar.gz
4.編譯安裝
進入到 nginx 的根目錄:cd nginx-1.8.0
配置安裝引數: ./configure --prefix=/usr/local/nginx
編譯:make
編譯安裝 make install
5.nginx的啟動和關閉
啟動:./nginx
關閉:./nginx -s quit
重啟:./nginx -s reload
6.測試
安裝成功後,啟動nginx,在瀏覽器上直接輸入ip即可。(nginx預設監聽的是80埠)
注意:記得關閉防火牆
配置虛擬主機
需求
一臺 Linux 伺服器繫結兩個 ip:192.168.70.144、192.168.70.188
訪問不同的 ip 請求不同的 html 目錄,即:
訪問 http://192.168.70.144 將訪問“html144”目錄下的 html 網頁
訪問 http://192.168.70.188
2.Nginx的虛擬主機配置方式
Nginx 支援三種類型的虛擬主機配置
基於 IP 的虛擬主機
基於埠的虛擬主機
基於域名的虛擬主機
2.1基於 IP 的虛擬主機
- 將動態 IP 修改為靜態 IP
--cd /etc/sysconfig/network-scripts
--vim ifcfg-eth0
IPADDR=192.168.10.144
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=114.114.114.114
2)將/etc/sysconfig/network-scripts/ifcfg-eth0 檔案複製一份,命名為
ifcfg-eth0:1;
--cp -rf ifcfg-eth0 ifcfg-eth0:1
修改複製後的ifcfg-eth0:1
--vim ifcfg-eht0:1
修改其中內容:
DEVICE=eth0:1
IPADDR=192.168.70.188
其他項不用修改
重啟網路
--service network restart
3)修改 Nginx 的配置檔案nginx.conf完成基於 IP 的虛擬主機配置
Nginx.conf
user root; (此處需要修改,分配許可權)
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#一個 Server 就是一個虛擬主機
server {
listen 80;
#為虛擬機器指定 IP 或者是域名
server_name 192.168.70.144;
#主要配置路由訪問資訊
location / {
#用於指定訪問根目錄時,訪問虛擬主機的 web 目錄
root html144;
#在不指定訪問具體資源時,預設的展示資源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#一個 Server 就是一個虛擬主機
server {
listen 80;
#為虛擬機器指定 IP 或者是域名
server_name 192.168.70.188;
#主要配置路由訪問資訊
location / {
#用於指定訪問根目錄時,訪問虛擬主機的 web 目錄
root html188;
#在不指定訪問具體資源時,預設的展示資源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
- 重啟nginx
2.2基於埠的虛擬主機
1)需求
Nginx 對提供 8080 與 9090 兩個埠的監聽服務
請求 8080 埠則訪問 html8080 目錄下的 index.html
請求 9090 埠則訪問 html9090 目錄下的 index.html
修改 Nginx 的配置檔案完成基於埠的虛擬主機配置
#一個 Server 就是一個虛擬主機 基於埠
server {
listen 8080;
server_name 192.168.70.188;
#主要配置路由訪問資訊
location / {
#用於指定訪問根目錄時,訪問虛擬主機的 web 目錄
root html8080;
#在不指定訪問具體資源時,預設的展示資源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#一個 Server 就是一個虛擬主機
server {
listen 9090;
#為虛擬機器指定 IP 或者是域名
server_name 192.168.70.188;
#主要配置路由訪問資訊
location / {
#用於指定訪問根目錄時,訪問虛擬主機的 web 目錄
root html9090;
#在不指定訪問具體資源時,預設的展示資源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2)重啟nginx
2.3基於域名的虛擬主機
1)需求
兩個域名指向同一個 nginx 伺服器,使用者訪問不同的域名時顯示不同的內容。
域名規劃:
2)修改 windows 的 hosts 檔案配置域名與 ip 的對映
檔案路徑:C:\Windows\System32\drivers\etc
修改 Nginx 的配置檔案完成基於域名的虛擬主機配置
nginx.conf
server {
listen 80;
#為虛擬機器指定 IP 或者是域名
server_name www.bjsxt.com;
#主要配置路由訪問資訊
location / {
#用於指定訪問根目錄時,訪問虛擬主機的 web 目錄
root html-bjsxt;
#在不指定訪問具體資源時,預設的展示資源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#一個 Server 就是一個虛擬主機
server {
listen 80;
#為虛擬機器指定 IP 或者是域名
server_name www.itbaizhan.cn;
#主要配置路由訪問資訊
location / {
#用於指定訪問根目錄時,訪問虛擬主機的 web 目錄
root html-itbaizhan;
#在不指定訪問具體資源時,預設的展示資源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
五、Nginx 中配置服務的反向代理
1需求
安裝兩個 tomcat 服務,通過 nginx 反向代理。
本案例中使用兩臺虛擬機器演示。
tomcat 安裝到 192.168.70.143 環境中。埠為 8080 與 9090
Nginx 安裝在 192.168.70.144 環境中
2.反向代理實現
- 安裝 2個tomcat
- 修改其中一臺的埠號
vim server.xml(3個都加10)
- 修改tomcat首頁進行區分 index.jsp
- 配置nginx的nginx.conf來實現服務的反向代理
修改:nginx.conf
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream tomcat_server1{
server 192.168.70.143:8080;
}
upstream tomcat_server2{
server 192.168.70.143:9090;
}
server {
listen 80;
#為虛擬機器指定 IP 或者是域名
server_name test.bjsxt.com;
#主要配置路由訪問資訊
location / {
#用於指定訪問根目錄時,訪問虛擬主機的 web 目錄
proxy_pass http://tomcat_server1;
#在不指定訪問具體資源時,預設的展示資源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#一個 Server 就是一個虛擬主機
server {
listen 80;
#為虛擬機器指定 IP 或者是域名
server_name test.itbaizhan.cn;
#主要配置路由訪問資訊
location / {
#用於指定訪問根目錄時,訪問虛擬主機的 web 目錄
proxy_pass http://tomcat_server2;
#在不指定訪問具體資源時,預設的展示資源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
測試結果:http://test.bjsxt.com 跳轉到 ;server 192.168.70.143:8080;(tomcat1)
http://test.itbaizhan.cn 跳轉到:server 192.168.70.143:9090;(tomcat2)
六、在反向代理中配置負載均衡
1.Nginx 負載均衡策略
1)輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後
端伺服器 down 掉,能自動剔除。
2)指定權重
指定輪詢機率,weight 和訪問比率成正比,用於後端伺服器
效能不均的情況。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3)IP 繫結 ip_hash
每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪
問一個後端伺服器,可以解決 session 的問題。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
七、http 協議代理
由於 ftp 伺服器是基於 ftp 協議處理的。那麼現在我想在外部訪問該圖片,是沒有辦法
訪問的。他是不能處理 http 協議的。所以我們需要擁有一個能夠處理 http 協議代理伺服器。
其實就是使用了 Nginx 的虛擬主機的方式。
1、需求
使用 Nginx 的基於域名的虛擬主機的方式來完成在 KindEditor 中新增圖片時的圖片回
顯處理。
nginx:192.168.70.144
VSFTPD:192.168.70.144
注意:nginx 與 VSFTPD 必須安裝到同一個環境中。
2解決 KindEditorDemo 專案中圖片回顯的問題
2.1修改系統的 hosts 檔案
2.2修改專案的 resource.properties 檔案
FTP_HOST=192.168.70.144
FTP_PORT=21
FTP_USERNAME=ftpuser
FTP_PASSWORD=ftpuser
FTP_BASEPATH=/home/ftpuser/
HTTP_BASE_PATH=http://img.bjsxt.com
2.3修改 nginx.conf
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
#為虛擬機器指定 IP 或者是域名
server_name img.bjsxt.com;
#主要配置路由訪問資訊
location / {
#用於指定訪問根目錄時,訪問虛擬主機的 web 目錄
root /home/ftpuser/;
#在不指定訪問具體資源時,預設的展示資源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}