反向代理:
客戶端(瀏覽器)不直接訪問目標服務器,而是通過代理服務器進行訪問,
可以不暴露目標服務器實際IP。
出現nginx css,js靜態資源無法訪問,nginx 404相關都可以參考以下配置
主要修改nginx.conf文件
這里我們先啟動兩個服務:
web1: 8001/; src(項目目錄):/usr/workspace/pc;
web2:8080/admin/;src(項目目錄): /usr/workspace/shiroSSO;
我們對外只暴露80端口,所以實際訪問http://www.simonjia.top:8001/

因為防火牆沒有開通8001端口,所以直接訪問8001,無法訪問;
訪問域名可以:

這里就起到反向代理的作用。
剛開始部署時發現css和js文件實際請求地址變成了127.0.0.1(部署多個項目,可根據項目名稱進行正則匹配)

原因是沒有在location中添加 proxy_set_header Host $host;
將代理的host主機地址變成域名實際地址,而不是本地的127.0.0.1;
如果nginx出現404錯誤,請注意alias /usr/workspace/pc;
配置alias對應項目的實際路徑。
從配置文件中可以看到web2的實際訪問路徑為:
http://www.simonjia.top/admin/login.html
因為在https中也進行相關配置,所以
https://www.simonjia.top/admin/login.html 也可以訪問。
打開rewrite ^(.*) https://$server_name$1 permanent;這點注釋,可以自動http跳轉到https中。
cd /usr/local/nginx/conf
vim nginx.conf
#user nobody;
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 102400;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name www.simonjia.top ;#服務器域名
#rewrite ^(.*) https://$server_name$1 permanent; #這句是代表 把http的域名請求轉成https
#charset koi8-r;
error_log /logs/nginx-error.log info;
access_log /logs/host.access.log main;
location / {
#root /usr/tools/nignx/nginx-1.9.9/web;
alias /usr/workspace/pc;
#index index.html index.htm;
#proxy_pass http://www.simonjia.top; #因為這里還是80端口,所以保持http就可以
proxy_pass http://127.0.0.1:8001/;#代理的實際端口,在本地8001
proxy_set_header Host $host;# 代理請求信息,轉換為實際域名地址
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 15s;
}
#8080管理后台
location /admin/ {
alias /usr/workspace/shiroSSO;
proxy_pass http://127.0.0.1:8080/admin/;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 15s;
}
#配置靜態資源 解決js css文件無法加載無法訪問的問題,注意末尾不能有 /
#正則匹配css文件,防止css:404
#多個項目css文件,可以根據項目路徑進行匹配
location ~ .*(/admin).*\.(js|css|jpg|jpeg|gif|png|ico|pdf|txt)$ {
proxy_pass http://127.0.0.1:8080; #匹配實際端口地址(不需要加入項目名)
}
location ~ .*\.(js|css|jpg|jpeg|gif|png|ico|pdf|txt)$ {
proxy_pass http://127.0.0.1:8001;
}
#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 html;
}
}
# HTTPS server 這里是配置ssl證書,需添加對應ssl模塊
#
server {
listen 443 ssl;
server_name www.simonjia.top;
ssl_certificate /usr/tools/nignx/ssl/xx.crt; #添加ssl證書
ssl_certificate_key /usr/tools/nignx/ssl/xx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
# proxy_pass https://www.simonjia.top;
}
#8080管理后台
location /admin/ {
alias /usr/workspace/shiroSSO;
proxy_pass http://127.0.0.1:8080/admin/;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 5s;
}
#配置靜態資源 解決js css文件無法加載無法訪問的問題,注意末尾不能有 /
location ~ .*\.(js|css|jpg|jpeg|gif|png|ico|pdf|txt)$ {
proxy_pass http://127.0.0.1:8080;
}
}
}
cd /usr/local/nginx/sbin
./nginx -s reload
重新加載nginx配置文件,熱部署,不用重啟。
