Devopslife

Straight to the point

Category: Uncategorized

Simulate upstream proxy timeout using nodejs

This is something that I have came across while tuning an nginx server which has multiple tomcat instances as upstream. We were trying to adjust the read timeout of the upstream proxies. It is hard to simulate this by stopping the backend as it will throw a 503 bad gateway. So, for simulating this, we used a nodejs script.


/*server.js*/
const http = require('http');
const hostname = '0.0.0.0';
const port = 8080;
function test(res) {
console.log("Inside test");
}
const server = http.createServer(function(req, res) {
console.log("Starting");
setTimeout(test, 20000);
});

server.listen(port, hostname, function() {
console.log('Server running at http://'+ hostname + ':' + port + '/');
});

Fix 404 error for permalinks while using SSL in wordpress

This was an issue I have faced while setting up this blog. I was getting 404 errors for all the post links in this blog when selecting the non default permalink structure with SSL. 

First thing I tried was to regenerate the .htaccess file. Removed the existing .htaccess file in the WordPress root folder. Regenerated the file by switching  the permalink again. That didnt worked for me. The fix was something with the web sever level. Finally, I found the fix. 

The directory tag is required in ssl virtual host config of apache same as of http port 80, to allow override redirect rules using .htaccess of wordpress.

Example


    <Directory /var/www/html/devopslife.io/>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Thanks to this digitalocean thread 

Monitor ECS agent uptime using crontab and SNS

The Amazon ECS container agent allows container instances to connect to your cluster. If this agent is down for some reason, deployments to the service won’t be reflected in the instance and can cause discrepancy.
Here is a one-liner to check if ECS agent container is running. If it is not running, we are making use of AWS SNS service to send a notification to a topic.
if [ -z $(docker ps -f “name=ecs-agent” -f “status=running” -q) ]; then /usr/bin/aws –region=us-east-1 sns publish –topic-arn “arn:aws:sns:us-east-1:123456789012:Topicname” –message “ECS Agent is not running in $HOSTNAME.”; fi
Make sure that the instance role has permissions to publish to the required topic and the topic is already configured.

Get any user’s public key from github

This is useful when you are giving SSH access to a server. Basically, we have to append the public key to ~/.ssh/authorized_keys.

curl https://github.com/<username>.keys | tee -a ~/.ssh/authorized_keys

Replace the with real github username.

Custom error code in nginx

In some cases, we might need to throw a custom/different error code for a specific issue. For example, we can throw a different error to the end user even if the backend node is down. We can do that in nginx as in the example below.
server {
    listen       8080;
    server_name  devopslife.io;
    error_page   502 503 504 =204 /temperror;
    location /temperror {
      return 204;
    }
  }
Now the user will only see a 204 even if its 503 in real

Start a temporary webserver using python SimpleHTTPServer

To start a HTTP server on port 8000 (which is the default port), simple type:

python -m SimpleHTTPServer

The PWD(present working directory) by which the command is executed will be served via HTTP. If we want to use custom port, use

 

python -m SimpleHTTPServer <portnumber>

For eg python -m SimpleHTTPServer 8080

 

 

Remove a commit from local and remote history

  • git reset –soft commit_id
  • git stash save “message”
  • git reset –hard commit_id
  • git stash apply stash [email protected]{0}
  • git push —force

Renaming git branch

1. Rename your local branch.
If you are on the branch you want to rename:
git branch -m new-name
2. Delete the old-name remote branch and push the new-name local branch.
git push origin :old-name new-name
3. Reset the upstream branch for the new-name local branch. Switch to the branch and then:
git push origin -u new-name

Delete a git commit that is already pushed

git log
 to check the commit list.
For example, commit 7f6d03 was before the 2 wrongful commits and we want to restore to that commit .
Force push that commit as the new master:
git push origin +7f6d03:master
The + is interpreted as forced push.
Another way
You can also use git reset to undo things. Then force push.
git reset 7f6d03 –hard
git push origin -f

OpenSSL commands to check certificate status

* Check a Certificate Signing Request (CSR)
openssl req -text -noout -verify -in CSR.csr
* Check a private key
openssl rsa -in privateKey.key -check
* Check a certificate
openssl x509 -in certificate.crt -text -noout
* Check a PKCS#12 file (.pfx or .p12)
openssl pkcs12 -info -in keyStore.p12

© 2019 Devopslife

Theme by Anders NorenUp ↑