1、nginx转发问题
前端不启动tomcat,直接用nginx作为服务器,前端npm run build后的文件放在指定目录D:/jscmp/
下,使用alias
,末尾需要加上斜杠/。百度:alias nginx相关问题
################################# WEB后台服务代理 #####################################################
upstream jscmp{
server 172.16.11.66:9000;
}
#########################
location /jscmp/ {
alias D:/jscmp/; ###末尾需要加上斜杠/
autoindex on;
}
2、nginx配置问题
传送门:贵安项目nginx配置
考试系统
配置文件中加了一个upstream jscmpPlat
和location /api/
,
前端不应该在配置文件projectBuild.config.ts
中加上"target": "http://172.16.11.66:10010"
后面加上/api
projectBuild.config.ts
image.png
标注1
和图片中的③
处的api应该说是同一个,页面访问接口的时候会带上这个api,与location处的api相同时,走proxy_pass http://jscmpPlat/
,然后转发到server 172.16.11.66:10010;
处,这个就是服务器上的项目的接口了。(项目的接口里本身就有一个api,所以页面上看到的请求接口会是两个/api,一个是标注1
,还有一个是接口里的,例如这个urlhttp://172.16.11.66:8180/api/api/role/list?
)
nginx代理后台项目的时候,
location /api/
这里的意思是匹配项目里前缀以/api的接口名,当匹配上之后,通过proxy_pass http://jscmpPlat/
转发到server 172.16.11.66:10010;
处。前端不应该在配置文件中projectBuild.config.ts
加/api
贵安项目企业云系统
①前端服务被nginx代理了,所以要加上路径/qyy
浏览器中输入: http://host:port/qyy/#/Login
②进入location /qyy/ {.........proxy_pass http://qianduan; }
通过proxy_pass转发到http://qianduan
,地址为 upstream qianduan{ server 172.16.11.39:8000;}
③ 看下代理后前端页面的访问接口http://172.16.11.66:8180/v1/enterpriseInfo?rows=6&page=1 可以看到url中并没有/qyy路径,这是因为/qyy是前端服务被代理时加上的路径,和后台服务并没有关系。看下后台服务被代理时如下,用了/,而没有加路径,所以url中没有路径,如果这里改为location /houtai
的话,那么url就变为http://172.16.11.66:8180/houtai/v1/enterpriseInfo?rows=6&page=1
######################### 访问贵安云谷后台服务 (后台服务,这里没有添加路径,只用了/代替)
###### 这里没有加路径
location / {
access_log off;
access_log logs/access-server-$log_time.log logfiles_187;
#proxy_set_header Host $http_host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
# proxy_buffer_size 400k;
# proxy_buffers 40 320k;
# proxy_busy_buffers_size 640k;
# proxy_temp_file_write_size 640k;
#此处配置的域名必须与upstream的域名一致,才能转发。
proxy_pass http://Dservers;
}
image.png
贵安的后台项目用nginx代理的时候,没有使用路径,是因为后台项目的接口没有统一的前缀,如果nginx里定义了一个名称A,那么就会有的接口匹配有的接口不匹配,所以location后是空的。
3、关于proxy_pass后斜杠问题
这篇文章 贵安项目nginx配置 是以IIS服务举例的,模板等文件被设为IIS服务,模板被放在E:\guian_files\files
下,斜杠和E:\guian_files\files
里的物理路径\files
有关??对于考试系统的项目,既然后台被代理了,接口中有两个/api的话,那么proxy_pass http://jscmpPlat/
最后需要加斜杠
2019-04-22理解:这里图片等文件是通过IIS方式启动服务,前端工程没有在配置文件中的访问后台地址那里专门加上/mh
比较(1)/(2)/(3)/(4)/种方式的urlA和urlC
总结:
名称A相同,没有斜杠,接口名urlA中不会加上A,urlC中不会加上A(✔)
名称A相同,有斜杠,接口urlA名中会加上A,urlC中不会加上A(✔)
名称A不相同,没有斜杠,接口urlA名中会加上A,urlC中会加上A(✘)
名称A不相同,有斜杠,接口urlA名中会加上A,urlC中不会加上A(✔)
贵安云谷和考试系统的nginx配置文件
#user nobody;
worker_processes 16;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 2048;
}
http {
include mime.types;
default_type application/octet-stream;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
log_format logfiles_187 '$remote_addr - $remote_user [$time_iso8601] "$request" '
'[$status] $body_bytes_sent "[$http_referer]" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
################################# WEB后台服务代理 #####################################################
upstream jscmpPlat{
server 172.16.11.66:10010;
}
################################# WEB后台服务代理 #####################################################
upstream Dservers{
server 172.16.11.66:10002;
}
################################# 前台服务代理 #####################################################
upstream qianduan{
server 172.16.11.39:8000;
}
################################# 手机后台服务代理 #####################################################
upstream Mobile{
server 172.16.11.39:8000 down;
server 172.16.11.68:8180;
}
################################# IIS文件服务代理 #####################################################
upstream FTPfiles{
server 172.16.11.39:8081;
}
server {
listen 8180; #(这里的8180是浏览器里的端口,如果配置了nginx,那么监听端口一定是这个)
server_name 172.16.11.66
charset utf-8;
if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})') {
set $log_time $1;
}
#client_max_body_size 10m;
#client_body_buffer_size 1280k;
######################### 报名考试系统 (代理的是前端)
########## (这里没有放在tomcat下,通过nginx启动前端服务。代理的是前端,所以浏览器里需要加上路径/jscmp)
location /jscmp/ {
alias D:/jscmp/;
}
######################### 报名考试系统后台
##########(代理的是后台服务,这里添加路径/api/,所以接口里要多一个路径)
########## http://172.16.11.66:8180/api/api/authSubject/page?size=20¤t=1&subjectType=1101
location /api/ {
access_log off;
access_log logs/access-mh-$log_time.log logfiles_187;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
# proxy_buffer_size 400k;
# proxy_buffers 40 320k;
# proxy_busy_buffers_size 640k;
# proxy_temp_file_write_size 640k;
#此处配置的域名必须与upstream的域名一致,才能转发。
proxy_pass http://jscmpPlat/;
}
######################### 访问统一门户系统 (代理的是前端)
################## (发布在tomcat下,有端口172.16.11.39:8000。代理的是前端,所以浏览器里需要加上路径/mh)
####### http://172.16.11.66:8180/mh/#/Login
location /mh/ {
access_log off;
access_log logs/access-mh-$log_time.log logfiles_187;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
# proxy_buffer_size 400k;
# proxy_buffers 40 320k;
# proxy_busy_buffers_size 640k;
# proxy_temp_file_write_size 640k;
#此处配置的域名必须与upstream的域名一致,才能转发。
proxy_pass http://qianduan;
}
######################### 访问物业管理系统 (代理的是前端)
######## (发布在tomcat下,有端口172.16.11.39:8000。代理的是前端,所以浏览器里需要加上路径/wy)
####### http://172.16.11.66:8180/wy/#/Login
location /wy/ {
access_log off;
access_log logs/access-mh-$log_time.log logfiles_187;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
# proxy_buffer_size 400k;
# proxy_buffers 40 320k;
# proxy_busy_buffers_size 640k;
# proxy_temp_file_write_size 640k;
#此处配置的域名必须与upstream的域名一致,才能转发。
proxy_pass http://qianduan;
}
######################### 访问运营管理系统 (代理的是前端)
####### (发布在tomcat下,有端口172.16.11.39:8000。代理的是前端,所以浏览器里需要加上路径/yy)
####### http://172.16.11.66:8180/yy/#/Login
location /yy/ {
access_log off;
access_log logs/access-yy-$log_time.log logfiles_187;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
# proxy_buffer_size 400k;
# proxy_buffers 40 320k;
# proxy_busy_buffers_size 640k;
# proxy_temp_file_write_size 640k;
#此处配置的域名必须与upstream的域名一致,才能转发。
proxy_pass http://qianduan;
}
######################### 访问企业云系统 (代理的是前端)
####### (发布在tomcat下,有端口172.16.11.39:8000。代理的是前端,所以浏览器里需要加上路径/qyy)
####### http://host:port/qyy/#/Login
location /qyy/ {
access_log off;
access_log logs/access-qyy-$log_time.log logfiles_187;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
# proxy_buffer_size 400k;
# proxy_buffers 40 320k;
# proxy_busy_buffers_size 640k;
# proxy_temp_file_write_size 640k;
#此处配置的域名必须与upstream的域名一致,才能转发。
proxy_pass http://qianduan;
}
######################### 手机App页面管理 (代理的是app前后台,因为这个是不分离开发方式)
######(发布在tomcat下,有端口172.16.11.68:8180。代理的是前端,所以浏览器里需要加上路径/parkmall)
####### http://172.16.11.68:8180/parkmall/loginAction.do?login
location /parkmall/ {
access_log off;
access_log logs/access-mh-$log_time.log logfiles_187;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
# proxy_buffer_size 400k;
# proxy_buffers 40 320k;
# proxy_busy_buffers_size 640k;
# proxy_temp_file_write_size 640k;
#此处配置的域名必须与upstream的域名一致,才能转发。
proxy_pass http://Mobile;
}
######################### 访问IIS 文件服务器 (代理的是IIS,相当于一个网站,应该归于前端)
######(模板等文件,设置了IIS服务,有端口172.16.11.39:8081。代理的是前端,所以浏览器里需要加上路径/files)
####### http://172.16.11.66:8180/files/templates/ggg.jpeg
location /files/ {
access_log off;
access_log logs/access-ftp-$log_time.log logfiles_187;
#proxy_redirect http:// $scheme://;
#proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
#proxy_set_header Host $http_host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
# proxy_buffer_size 400k;
# proxy_buffers 40 320k;
# proxy_busy_buffers_size 640k;
# proxy_temp_file_write_size 640k;
#此处配置的域名必须与upstream的域名一致,才能转发。
proxy_pass http://FTPfiles;
}
######################### 访问贵安云谷后台服务 (代理的是后台服务,这里没有添加路径,只用了/代替)
###### 这里没有加路径
###### http://172.16.11.66:8180/v1/enterpriseInfo?rows=6&page=1
location / {
access_log off;
access_log logs/access-server-$log_time.log logfiles_187;
#proxy_set_header Host $http_host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
# proxy_buffer_size 400k;
# proxy_buffers 40 320k;
# proxy_busy_buffers_size 640k;
# proxy_temp_file_write_size 640k;
#此处配置的域名必须与upstream的域名一致,才能转发。
proxy_pass http://Dservers;
}
error_page 404 /404.html;
location = /40x.html {
root html;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
网友评论