一、Nginx安装与启动
1、下载官方压缩包,解压即可。
2、命令
1)启动:C:\server\nginx-1.0.2>nginx.exe
2)停止:C:\server\nginx-1.0.2>nginx.exe -s stop 或 C:\server\nginx-1.0.2>nginx.exe -s quit
3)重新载入:C:\server\nginx-1.0.2>nginx.exe -s reload
4)打开localhost:80如果有welcome字样,表示运行成功,如果没有成功,尝试修改端口解决
二、iis添加.net站点:
关键点是绑定站点的时候:主机名:不需要填写。端口:填写非占用即可,这边填写9529。IP地址:填写*。
即可以通过127.0.0.1:9529访问到站点,不会报错:Bad Request - Invalid Hostname即可。
三、nginx配置:
找到C:\server\nginx-1.0.2\conf\nginx.conf文件中的http对象下,添加如下配置:
server {
# 需要被监听的端口号,前提是此端口号没有被占用,否则在重启 Nginx 时会报错
listen 9527;
# 服务名称,无所谓
server_name 127.0.0.1;
# 上述端口指向的根目录
root D:\Workspace\ots\OTS.Presentation.Web\App_View\ots-app\dist;
# 根请求会指向的页面
location / {
# 此处的 @router 实际上是引用下面的转发,否则在 Vue 路由刷新时可能会抛出 404
try_files $uri $uri/ @router;
# 请求指向的首页
index index.html index.htm;
}
# 由于路由的资源不一定是真实的路径,无法找到具体文件
# 所以需要将请求重写到 index.html 中,然后交给真正的 Vue 路由处理请求资源
location @router {
rewrite ^.*$ /index.html last;
}
# 关键步骤,这里表示将所有的 http://127.0.0.1:9527/prod-api/ 开头的请求都转发到下面 proxy_pass 指定的链接中
# 这里使用 /prod-api/ ,是因为前端项目本身的访问链接就是 http://127.0.0.1:9527/
# 为了防止在访问页面时请求就被 Nginx 代理转发,这里需要更具体的配置,才能和前端访问请求区分开
location /prod-api/ {
# 把 /prod-api 路径下的请求转发给真正的后端服务器
proxy_pass http://127.0.0.1:9529/;
# 把host头传过去,后端服务程序将收到your.domain.name, 否则收到的是localhost:8080
proxy_set_header Host $http_host;
proxy_set_header Cookie $http_cookie;
# 把cookie中的path部分从/api替换成/service
proxy_cookie_path /prod-api /;
# 把cookie的path部分从localhost:8080替换成your.domain.name
proxy_cookie_domain 127.0.0.1:9527 127.0.0.1:9529;
#for Ajax
#fastcgi_param HTTP_X_REQUESTED_WITH $http_x_requested_with;
proxy_set_header HTTP-X-REQUESTED-WITH $http_x_requested_with;
proxy_set_header HTTP_X_REQUESTED_WITH $http_x_requested_with;
proxy_set_header x-requested-with $http_x_requested_with;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 128k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
}
}
执行 重新载入:C:\server\nginx-1.0.2>nginx.exe -s reload命令,等待一段时间,打开127.0.0.1:9527尝试,应该能成功。
注意:这边有个关键点,就是要区分是请求页面还是要请求api接口,我这边使用的是prod-api来区分。
即请求页面的请求:http://127.0.0.1:9527/#/login
请求API的请求:http://127.0.0.1:9527/prod-api/home/searching