这里的问题,我建立了nginx版本1.7.6(我和1.4.2一样)我需要管理以下域名:
其中只有一个由http服务,所有其他重定向到https,在这里我发布我的nginx.conf文件(我把所有内部用于测试,我知道网站可用),但问题是当我添加管理所有请求的api.mysite.company部分为什么?
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#################### api_backend ###############################
upstream api_backend {
server 127.0.0.1:3000;
server 127.0.0.1:3001 backup;
}
##################### api.mysite.company ############################
server {
listen 80;
server_name api.mysite.company;
location / {
proxy_pass http://api_backend;
}
}
########################## mysite.company (80) #########################
server {
listen 80;
server_name mycompany.company secure.mycompany.company;
return 301 https://$host$request_uri;
}
############################### HTTPS #################################
server {
listen 443 ssl;
server_name mycompany.company secure.mycompany.company www.mycompany.company;
ssl_certificate /var/local/myc.crt;
ssl_certificate_key /var/local/myc.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root mycompany/secure;
index index.html;
}
}
}
如果移动### mysite.company(80)####部分看起来效果很好,但似乎有时候server_name上的冲突引发了!
答案 0 :(得分:0)
如果server_name
有多个匹配项,nginx将使用第一个匹配项。检查您的站点可用目录中的配置评估顺序。
答案 1 :(得分:0)
根据http://nginx.org/en/docs/http/server_names.html
按名称搜索虚拟服务器时,如果名称匹配多个 指定的变体之一,例如通配符名称和常规名称 表达式匹配,将在第一个匹配变体中选择 优先顺序如下:
- 确切名称
- 以星号开头的最长通配符名称,例如“
*.example.org
”- 以星号结尾的最长通配符名称,例如“
mail.*
”- 第一个匹配的正则表达式(按在配置文件中出现的顺序)
我认为,nginx文档的这一部分“无所不包”。