Nginx with SSH Proxy on MAC
Nginx with SSH Proxy on MAC
1. Some Tips to Enable Nginx on Proxy
Reload the Configuration
>sudo sbin/nginx -s reload
Test the configuration
>sudo sbin/nginx -t
Help to redirect the Header Information
location / {
proxy_pass http://sillycat;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
Nginx will act as a proxy. It can cache all static file and other files.
2. Prepare Self Signed SSL certificate.
>pwd
/opt/nginx/conf
>mkdir ssl
>cd ssl
>openssl genrsa -des3 -out nginx.in.key 1024
Type the password and generate that file
To create a CSR(Certificate Signing Request)
>openssl req -new -key nginx.in.key -out nginx.in.csr
Answer the right question.
Remove the passphrase
>cp nginx.in.key nginx.in.key.bak
>openssl rsa -in nginx.in.key.bak -out nginx.in.key
>openssl x509 -req -days 365 -in nginx.in.csr -signkey nginx.in.key -out nginx.in.crt
3. Configure Nginx As SSL Reverse Proxy
>vi conf/nginx.conf
listen 443;
ssl on;
ssl_certificate ssl/nginx.in.crt;
ssl_certificate_key ssl/nginx.in.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
keepalive_timeout 60;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
>sudo sbin/nginx -t
Error Message:
nginx: [emerg] unknown directive "ssl" in /Users/carl/tool/nginx-1.5.3/conf/nginx.conf:44
nginx: configuration file /Users/carl/tool/nginx-1.5.3/conf/nginx.conf test failed
Solution:
>cd /Users/carl/data/nginx-1.5.6
--with-http_ssl_module
>./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/Users/carl/tool/nginx-1.5.6
Error Message:
./configure: error: C compiler cc is not found
Solution:
Install Command Line Tools for Xcode from here https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-
The file named command_line_tools_os_x_mountain_lion_for_xcode__september_2013.dmg, install it.
>gcc -v
gcc is there and fine now.
>./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/Users/carl/tool/nginx-1.5.6
>make
>make install
>sudo ln -s /Users/carl/tool/nginx-1.5.6 /opt/nginx-1.5.6
>sudo ln -s /opt/nginx-1.5.6 /opt/nginx
>sudo sbin/nginx -t
nginx: the configuration file /Users/carl/tool/nginx-1.5.6/conf/nginx.conf syntax is ok
nginx: configuration file /Users/carl/tool/nginx-1.5.6/conf/nginx.conf test is successful
>sudo sbin/nginx // sudo sbin/nginx -s reload
It is working fine.
References:
http://www.cyberciti.biz/faq/howto-linux-unix-setup-nginx-ssl-proxy/
http://www.mkyong.com/mac/how-to-install-gcc-compiler-on-mac-os-x/