布署到生产环境跟开发环境有显著的区别,一个关注性能和安全,一个关注开发效率。若是将开发环境直接布署到线上,经常会出现敏感信息泄露和性能低下的问题。所以这里简单介绍布署到生产环境的一些基础检查点,分红如下几部分讨论:javascript
当你发出请求时:php
curl -I https://codefriend.top HTTP/1.1 200 OK Server: nginx/1.16.7 <---出现该提示 Date: Tue, 01 Jun 2017 00:00:00 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/7.2.25
经过增长以下配置可关nginx版本提示。css
server_tokens off
须要注意,仍然会出现Server: nginx
,想完全不显示这个信息,须要重编译nginx,具体见如下连接html
https://serverfault.com/questions/214242/can-i-hide-all-server-os-infojava
正式环境必定要开gzip压缩,不然传输效率能够差十来倍,nginx增长以下配置:nginx
gzip on; gzip_disable "msie6"; gzip_min_length 1k; gzip_comp_level 1; gzip_vary on; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
服务器为4核就改为4,为8就改为8:laravel
worker_processes 4;
user www; worker_processes 4; pid /run/nginx.pid; daemon off; events { worker_connections 2048; multi_accept on; use epoll; } http { server_tokens off; gzip on; gzip_disable "msie6"; gzip_min_length 1k; gzip_comp_level 1; gzip_vary on; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; # 省略其余配置 }
许多攻击的构造方式是/index.php?c=homecontroncller&a=login
的这种方式去尝试,所以直接关闭对php的直接访问是有必要的。后端
server { listen 80; listen [::]:80; server_name localhost; root /var/www; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { internal; # 重点要设置成内部,访问*.php时能够直接返回404 try_files $uri /index.php =404; fastcgi_pass php-upstream; fastcgi_index index.php; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
参考文件:api
https://stackoverflow.com/questions/47379091/nginx-block-access-to-php-files安全
当你发出请求时:
curl -I https://codefriend.top HTTP/1.1 200 OK Server: nginx Date: Tue, 01 Jun 2017 00:00:00 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/7.2.25 <---出现该提示
修改php.ini
文件,便可关闭该提示
expose_php = Off
第1,2点,直接修改.env
文件便可:
APP_ENV=production APP_DEBUG=false API_DEBUG=false
第3点,须要手动修改,可参考下如下连接:
这2个没法经过简单检查配置解决,主要依赖于开发人员水平以及依赖于安全工具的检查。
使用密码登录SSH时,多我的使用时是没法区分出谁是谁的。可是使用密钥作无密码登录时,安全审计都有记录密钥的指纹,因而能够区分出某一个时间点的登录是谁。所以,对于生产环境,建议不使用密码登录,而用密钥作无密码登录。