2016-11-16 83 views
0

我有一个配置,将不允许任何HTTP调用我的服务(强制https)。我只需要提供对一个IP的HTTP访问权限,我不确定什么是最好的方法,或者是否可以用NGINX来做到这一点。Nginx - 允许HTTP为IP

这里是我的配置:

server { 
     listen 80; 
     listen 443; 
     server_name myserver.com; 

     client_max_body_size 64M; 
     proxy_connect_timeout  600; 
     proxy_send_timeout   600; 
     proxy_read_timeout   600; 
     send_timeout    600; 

     ssl on; 
     ssl_certificate /com.crt; 
     ssl_certificate_key /com.key; 

     access_log /var/log/nginx/log.log custom; 

     if ($scheme = http) { 
       return 400 "Sceme not allowed - please use https (SSL)"; 
     } 

     location/{ 
       include proxy_params; 
       proxy_pass http://unix:/tmp/my.sock:/; 
       add_header Cache-Control private; 
     } 

     location /static/ { 
       root /var/www/myapp/root; 
     } 
} 

回答

1

您已启用SSL端口80.您应该使用在listen指令的ssl参数并删除ssl on;声明:

listen 80; 
listen 443 ssl; 

这使得非-SSL到端口80和SSL到端口443.

有关详细信息,请参阅this document

+0

感谢您的回答。如果我这样做,我的服务将接受所有http请求。我想限制http请求只有一个IP。那可能吗 ? – user2988649

+0

你应该使用两个'server'块,每个端口一个。 –