為什麼需要Nginx
CppCMS自己已經支援Http訪問,為什麼還需要Nginx.一些原因是我們需要動態Server Load Balancer,還有原因是安全問題。下面的文字來自於CppCMS網站。
CppCMS provides basic implementation of HTTP protocol and thus it can run behind reverse HTTP Proxy. But this option is not recommended for use in production environment unless HTTP protocol is fully sanitized by the proxy itself, otherwise you may expose yourself to various security issues.
Nginx開啟FastCGI
在nginx.conf檔案的server一節添加如下配置,請注意^/hello(.*)$代表用CppCMS構建的Web網站的URI的上下文路徑。而fastcgi_pass 192.168.30.17:8081 則是指Nginx要和位於30.17的CppCMS網站通過FastCGI協議通訊。這裡其實可以指定多個.
location ~ ^/kaimei.*$ { fastcgi_pass localhost:8080; fastcgi_split_path_info ^(/kaimei)(.*)$; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_NAME /kaimei; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name;}
簡單說明:
location ~ 後面是Regex,符合/kaimei開頭的URL都會使用location這段配置。
其他可以看nginx文檔:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_info
這段配置可以單獨存放在檔案中,比如my.conf
然後在nginx.conf中 用include my.conf; 引入。
CppCMS配置
現在來配置30.17上的CppCMS服務。主要是config.js檔案的內容:
"service" : {
"api" : "fastcgi",
"ip" : "192.168.30.17",
"port" : 8081
}
測試
現在啟動CppCMS服務和Nginx服務。然後測試通過。