一、介绍
- http默认port是80,如果配置的port是80,访问时不用添加port
- 一个项目多个前端模块,则在一个server中配置
- 多个项目则配置多个server,ip 或 port 配置成不同
- 配置完成后防火墙要放开 配置的端口
二、配置
#1、全局块
#指定运行worker进程的用户和组:user USERNAME [GROUPNAME];
#组可省
#注释掉也默认用户nobody,一般服务器没有nodoby用户,一般指定为分配的用户或者root,这样nginx才会有前端文件夹的权限
#user nobody;
#允许生成的进程数,默认为1
worker_processes 1;
#指定全局错误日志的位置、级别,默认nginx/logs/error.log
#级别由低到高:debug|info|notice|warn|error|crit|alert|emerg
#error_log logs/error.log notice;
#error_log logs/error.log info;
#nginx进程文件生成位置
#pid logs/nginx.pid;
#2、events块,配置影响nginx服务器或与用户的网络连接
events {
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections 1024;
}
#3、http块,可以嵌套多个server,配置代理,缓存、日志
http {
#文件扩展名与文件类型映射表
include mime.types;
#默认的文件类型
default_type application/octet-stream;
#定义日志的输出格式
#$server_name 虚拟主机名称
#$remote_addr 远程客户端的IP地址,请求者IP
#$remote_user 远程客户端用户名称,用于记录浏览者进行身份验证时提供的名字
#[$time_local] 访问的时间与时区
#$request 请求的url、HTTP协议
#$status 请求返回的http状态码
#$body_bytes_sent 发送给客户端的文件主体内容的大小
#$http_referer 用来记录从那个页面链接访问过来的
#$http_user_agent 客户端浏览器的相关信息
#http_x_forwarded_for 客户端的真实ip
log_format main '$remote_addr - $remote_user [$time_local] - "$request" '
'$status - $body_bytes_sent - "$http_referer" '
'"$http_user_agent" - "$http_x_forwarded_for"';
#指定所有server访问的日志输出位置(未指定则nginx/logs/access.log)、格式(log_format-main定义的输出格式)
access_log logs/access.log main;
#允许sendfile方式传输文件,开启高效传输模式
sendfile on;
#防止网络阻塞
#tcp_nopush on;
#连接超时时间,单位s
#keepalive_timeout 65;
#是否开启gzip压缩输出
#gzip on;
#当多个项目使用nginx虚拟主机配置时,每个项目创建一个project.conf,只写server块内容,以下的内容就散落在各个项目对应的配置文件中
include /etc/nginx/conf.d/*.conf;
#5、配置虚拟主机的配置
server {
#监听端口
listen 8080;
#监听地址,可以是ip(localhost)或者域名(www.test.com),配置域名之后ip:post的形式依旧可以访问
server_name localhost;
#编码格式,若网页格式与此不同,将被自动转码
#charset koi8-r;
#该server的访问日志,输出位置、格式(log_format - main定义的日志输出格式)未定义则使用 http 下的access_log配置
#access_log logs/host.access.log main;
location / {
#项目部署位置
root /home/safe/dist;
#解决路由url页面刷新404
#当我们访问路由中的url时,nginx并没有配置这个url,所以404,只针对Router - history模式
#hash模式只有一个index.html页面,其他组件只是锚点,所以不会有该问题
try_files $uri $uri/ /index.html;
#替代一些rewrite的指令,提高解析效率,按顺序检查文件是否存在
#访问此url 会去访问/home/ui/index.html或者index.htm
index index.html index.htm;
#设置缓存时间,用户在缓存时间内访问,都只会访问浏览器中的缓存,而不会去请求nginx,单位:s、m、h、d
#expires 1d;
#设置禁止浏览器缓存,每次都从服务器请求
#add_header Cache-Control no-cache;
#add_header Cache-Control private;
#nginx默认是不允许列出整个目录的(一般下载会使用),autoindex on-启用目录流量
#autoindex_exact_size默认为on,显示出文件的确切大小,单位是bytes;off-显示出文件的大概大小,单位是kB或者MB或者GB
#autoindex_localtime默认为off,显示的文件时间为GMT时间on-显示的文件时间为文件的服务器时间
#autoindex on;
#autoindex_exact_size on;
#autoindex_localtime off;
}
#当请求跨域时配置端口转发
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#转发地址
proxy_pass http://localhost:8088/race/;
}
#proxy_pass
#1)配置的转发地址末尾加 / (http://localhost:8088/),表示绝对根路径,nginx不会把location中匹配的路径部分代理走。访问localhost:8080/prod-api/get=访问http://localhost:8088/race/get
#2)配置的转发地址末尾不加 / (http://localhost:8088),表示相对路径,把匹配的路径部分也给代理走。访问localhost:8080/prod-api/get=访问http://localhost:8088/race/prod-api/get
#该server状态码404时,返回的页面
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
#该server状态码50X的错误页面位置,默认nginx/html/50x.html
location = /50x.html {
root html;
}
}
#第二个虚拟主机配置
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
#第三个虚拟主机配置,ssl
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.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;
# }
#}
}
三、示例
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root D:/code/project-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/race/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}